Web浏览器和javascript window.close()

Jua*_*uan 10 .net c# browser

如果我WebBrowser在我的应用程序中托管一个,并且在我的WebBrowser调用上显示的网页中有一个javascript代码window.close(),我在提示符上单击"是",我的WebBrowser消失,但我的表单保持打开状态.

我不想禁用javascript,而不是按"是"显然不是解决方案.处理这个问题的最佳方法是什么?即使用户按下"是",这是否可以以编程方式取消?而且,还有其他任何类似的javascript技巧window.close()可能会搞砸我的应用程序,我应该知道吗?(我的应用程序使用a WebBrowser来搜索网络,因此应该考虑每个可能的javascript代码.)

小智 6

在WPF中,您可以通过附加到WebBrowser的消息循环来捕获WM_CLOSE消息.

public MainWindow()
{
    InitializeComponent();
    webBrowser.MessageHook += webBrowser_MessageHook;
}

IntPtr webBrowser_MessageHook(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
    switch(msg)
    {
        case 0x0010:    // WM_CLOSE
            handled = true; // cancel event here
            // do additional stuff here    
            break;
    }
    return IntPtr.Zero;
}
Run Code Online (Sandbox Code Playgroud)


Uwe*_*eim 5

有一个接口DWebBrowserEvents2有一个方法WindowClosing,您可以使用该方法取消window.close()呼叫.

(我在这篇帖子中找到了建议)

  • 任何人都可以详细说明"你可以使用"这个吗? (6认同)