C#-当网页上的javascript调用window.Close()时,关闭System.Windows.Forms.WebBrowser

C#-当网页上的javascript调用window.Close()时,关闭System.Windows.Forms.WebBrowser,javascript,c#,winforms,visual-studio-2012,expression-blend,Javascript,C#,Winforms,Visual Studio 2012,Expression Blend,我正在C#System.Windows.Forms.WebBrowser上启动一个网站,在该网站上执行任务后,该网站的javascript调用一个包含以下内容的函数: window.open("Closer.html", '_self'); Closer.html包含以下内容: <script type="text/javascript"> window.close(); </script> window.close(); 这在IE或chrome这样的外部浏览器上

我正在C#System.Windows.Forms.WebBrowser上启动一个网站,在该网站上执行任务后,该网站的javascript调用一个包含以下内容的函数:

window.open("Closer.html", '_self');
Closer.html包含以下内容:

<script type="text/javascript">
window.close();
</script>

window.close();
这在IE或chrome这样的外部浏览器上非常有效。但我的winforms浏览器仍处于打开状态。我对此进行了研究,发现其他人也遇到过这个问题,并且一直无法找到解决方案


我想让我的C#System.Windows.Forms.WebBrowser类检测到javascript函数window.close()已被调用,然后执行一个简单的this.close()调用,或者如果可以的话,我可以修改javascript Closer.html以关闭System.Windows.Forms.WebBrowser窗口。

尝试一下。将浏览器设置为允许导航。从设计器或通过代码

wb.AllowNavigation = true;
wb.Navigating += wb_Navigating;
然后,查看是否触发此事件:

private void wb_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    if (e.Url.AbsolutePath.IndexOf("closer.html", StringComparison.OrdinalIgnoreCase) > 1)
        this.Close();
}
显然,您需要连接导航事件。同样,通过设计器或代码

wb.AllowNavigation = true;
wb.Navigating += wb_Navigating;

编辑:这应该适用于你的具体情况,但我确实看到一个很好的答案张贴在这里类似的问题


使用在那里找到的代码,并修改html,您应该能够处理这个问题。您可以只调用window.close(),而不是执行重定向。然后,网络浏览者应该注意并相应地采取行动。

而且,您没有访问html文件的权限,对吗?要更改javascript或html吗?实际上,是的,我完全可以访问html文件。好的,我只是想考虑一下选项。连接到导航事件并检查“Closer.html”的url怎么样?听起来不错。我对导航事件并不十分熟悉。在Winforms浏览器上,当我希望它调用Closer.html时,它似乎保留在原始网页上。此浏览器在使用过程中除了调用op中描述的Closer.html之外,不会执行任何导航。请参阅我的文章,并让我知道它是如何运行的。这似乎可以完美地工作。明天一整天我都会测试它,并随时通知你。非常感谢你的帮助!没问题。祝你好运