C# Cefsharp中的弹出处理程序

C# Cefsharp中的弹出处理程序,c#,popup,chromium-embedded,cefsharp,C#,Popup,Chromium Embedded,Cefsharp,我试图在Cefsharp(43版,用于Winforms)中处理弹出窗口,因为我需要在弹出窗口中执行一些javascript并导航到其他站点,但当弹出窗口出现时,应用程序开始冻结。另外,我阅读了这个问题的答案,并尝试实现它,我的代码如下所示 public class LifeSpanHandler : ILifeSpanHandler { public event Action<string> PopupRequest; //The other members of

我试图在Cefsharp(43版,用于Winforms)中处理弹出窗口,因为我需要在弹出窗口中执行一些javascript并导航到其他站点,但当弹出窗口出现时,应用程序开始冻结。另外,我阅读了这个问题的答案,并尝试实现它,我的代码如下所示

 public class LifeSpanHandler : ILifeSpanHandler
{
    public event Action<string> PopupRequest;
    //The other members of this interface I leave empty
    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)
    {
        if (PopupRequest != null)
            PopupRequest(targetUrl);
        newBrowser = browserControl; // here I think is a problem
        return true;
    }
}

 // Here is Form1 class
    private void Button1_Click(object sender, EventArgs e)
    {
        LifeSpanHandler life = new LifeSpanHandler();
        chromiumWebBrowser1.LifeSpanHandler = life;
        life.PopupRequest += life_PopupRequest;     
       chromiumWebBrowser1.Load("http://www.popuptest.com/goodpopups.html");
    }

    void life_PopupRequest(object sender, string e)
    {
        Popup pop = new Popup();
        ChromiumWebBrowser popBrowser = new ChromiumWebBrowser(e);
        pop.Controls.Add(popBrowser);
        pop.Visible = true;
        popBrowser.Dock = DockStyle.Fill;
        popBrowser.Visible = true;
        // here the Application is freezing
    }`
public类LifeSpanHandler:ILifeSpanHandler
{
公共事件行动要求;
//我将此接口的其他成员留空
public bool OnBeforePopup(IWebBrowser浏览器控件、IBrowser浏览器、IFrame框架、字符串targetUrl、字符串targetFrameName、WindowOpenDisposition targetDisposition、bool用户手势、iWindows Winfo windowInfo、ref bool noJavascriptAccess、out IWebBrowser newBrowser)
{
if(PopupRequest!=null)
PopupRequest(targetUrl);
newBrowser=browserControl;//我认为这里有个问题
返回true;
}
}
//这是我的第一堂课
私有无效按钮1\u单击(对象发送者,事件参数e)
{
LifeSpanHandler life=新的LifeSpanHandler();
chromiumWebBrowser1.LifeSpanHandler=寿命;
life.popurequest+=life\u popurequest;
chromiumWebBrowser1.加载(“http://www.popuptest.com/goodpopups.html");
}
void life\u popurequest(对象发送方,字符串e)
{
Popup pop=新的Popup();
ChromiumWebBrowser popBrowser=新的ChromiumWebBrowser(e);
添加(popBrowser);
可见=真;
popBrowser.Dock=DockStyle.Fill;
popBrowser.Visible=true;
//这里的应用程序是冻结的
}`

那么我如何控制弹出窗口(执行一些javascript并导航到其他站点)?

newBrowser
应该是
ChromiumWebBrowser
的一个新实例。您需要自定义弹出窗口还是仅控制创建的标准弹出窗口?有关使用
newBrowser
的演示,请参阅。此功能是实验性的,在某些场景中已报告存在问题。在wpf示例中,它不是实验性的:
newBrowser
应该是
ChromiumWebBrowser
的新实例。您需要自定义弹出窗口还是仅控制创建的标准弹出窗口?有关使用
newBrowser
的演示,请参阅。此功能是实验性的,在某些场景中报告了问题。在wpf示例中,它不是实验性的: