Javascript Cef Sharp未显示使用window.open调用的弹出窗口
我已经使用CefSharp.WinForms构建了一个应用程序。这一切都很好,但当任何网站使用javascriptJavascript Cef Sharp未显示使用window.open调用的弹出窗口,javascript,c#-4.0,popupwindow,cefsharp,Javascript,C# 4.0,Popupwindow,Cefsharp,我已经使用CefSharp.WinForms构建了一个应用程序。这一切都很好,但当任何网站使用javascriptwindow.open()显示弹出窗口时,它将无法工作。 我已经实现了ILifeSpanHandler,它对链接运行得非常好,但在使用window.open()时失败。谁能帮我处理window.open() EDIT-1lifespanhandler实现 您是否使用示例验证了问题?你的LifeSpanHandler长什么样?在弹出前的onbeforepoop中返回什么?不使用给定示例
window.open()
显示弹出窗口时,它将无法工作。
我已经实现了ILifeSpanHandler,它对链接运行得非常好,但在使用window.open()时失败。谁能帮我处理window.open()
EDIT-1lifespanhandler实现
您是否使用示例验证了问题?你的LifeSpanHandler
长什么样?在弹出前的onbeforepoop
中返回什么?不使用给定示例。有关LifeSpanHandler
的信息,请参见编辑-1如果设置newBrowser=null
并删除其余代码(保留返回false
),它是否有效?另一个代码只是一个示例,我最近没有测试过它。标准的弹出窗口不需要它。即使在任何站点使用窗口时,它也不工作。未调用beforepoop.open()
onbeforepoop。您尝试过使用示例吗?默认情况下,还应启用所有弹出窗口。只需尝试删除您当前的LifeSpanHandler
,例如,注释掉您分配给browser.LifeSpanHandler=new LifeSpanHandler()
。
public class LifeSpanHandler : ILifeSpanHandler
{
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
//throw new NotImplementedException();
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
//throw new NotImplementedException();
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IWindowInfo windowInfo, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
ChromiumWebBrowser chromiumBrowser = null;
var windowX = windowInfo.X;
var windowY = windowInfo.Y;
var windowWidth = (windowInfo.Width == int.MinValue) ? 600 : windowInfo.Width;
var windowHeight = (windowInfo.Height == int.MinValue) ? 800 : windowInfo.Height;
chromiumWebBrowser.Invoke(new Action(() =>
{
var owner = chromiumWebBrowser.FindForm();
chromiumBrowser = new ChromiumWebBrowser(targetUrl)
{
LifeSpanHandler = this
};
chromiumBrowser.SetAsPopup();
var popup = new Form
{
Left = windowX,
Top = windowY,
Width = windowWidth,
Height = windowHeight,
Text = targetFrameName
};
owner.AddOwnedForm(popup);
//popup.Controls.Add(new Label { Text = "CefSharp Custom Popup" });
popup.Controls.Add(chromiumBrowser);
popup.Show();
}));
newBrowser = chromiumBrowser;
return false;
}
}