C# - 当网页上的 javascript 调用 window.close() 时关闭 System.Windows.Forms.WebBrowser
C# - Close a System.Windows.Forms.WebBrowser when the javascript on the webpage calls window.close()
我在 C# System.Windows.Forms.WebBrowser 上启动了一个网站,在网站上执行任务后,网站的 javascript 调用了一个由以下内容组成的函数:
window.open("Closer.html", '_self');
Closer.html 包含这个:
<script type="text/javascript">
window.close();
</script>
这在 IE 或 chrome 等外部浏览器上完美运行。但我的 winforms 浏览器保持打开状态。我研究了这个,发现其他人也遇到过这个问题,但一直无法找到解决方案。
我想让我的 C# System.Windows.Forms.WebBrowser class 检测到 javascript 函数 window.close() 已被调用,然后执行一个简单的 this.close() 调用,或者我可以修改 javascript Closer.html 以关闭 System.Windows.Forms.WebBrowser window 如果可以的话。
试试这个。将您的浏览器设置为允许导航。来自设计师或通过代码。
wb.AllowNavigation = true;
然后,查看是否触发了此事件:
private void wb_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.AbsolutePath.IndexOf("closer.html", StringComparison.OrdinalIgnoreCase) > 1)
this.Close();
}
显然,您需要连接导航事件。同样,通过设计器或代码。
wb.Navigating += wb_Navigating;
编辑:这应该适用于您的具体情况,但我确实看到这里针对类似问题发布了一个很好的答案。
How can I be notified when a window is closed by window.close (javascript)?
使用那里找到的代码,并修改 html,您应该能够处理这个问题。您可以调用 window.close() 而不是进行重定向。然后,网络浏览器应该注意到并采取相应的行动。
我在 C# System.Windows.Forms.WebBrowser 上启动了一个网站,在网站上执行任务后,网站的 javascript 调用了一个由以下内容组成的函数:
window.open("Closer.html", '_self');
Closer.html 包含这个:
<script type="text/javascript">
window.close();
</script>
这在 IE 或 chrome 等外部浏览器上完美运行。但我的 winforms 浏览器保持打开状态。我研究了这个,发现其他人也遇到过这个问题,但一直无法找到解决方案。
我想让我的 C# System.Windows.Forms.WebBrowser class 检测到 javascript 函数 window.close() 已被调用,然后执行一个简单的 this.close() 调用,或者我可以修改 javascript Closer.html 以关闭 System.Windows.Forms.WebBrowser window 如果可以的话。
试试这个。将您的浏览器设置为允许导航。来自设计师或通过代码。
wb.AllowNavigation = true;
然后,查看是否触发了此事件:
private void wb_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.AbsolutePath.IndexOf("closer.html", StringComparison.OrdinalIgnoreCase) > 1)
this.Close();
}
显然,您需要连接导航事件。同样,通过设计器或代码。
wb.Navigating += wb_Navigating;
编辑:这应该适用于您的具体情况,但我确实看到这里针对类似问题发布了一个很好的答案。
How can I be notified when a window is closed by window.close (javascript)?
使用那里找到的代码,并修改 html,您应该能够处理这个问题。您可以调用 window.close() 而不是进行重定向。然后,网络浏览器应该注意到并采取相应的行动。