为什么在WebBrowser.DocumentCompleted处理程序上关闭表单时会弹出IE窗口

时间:2012-09-25 13:31:51

标签: winforms webbrowser-control

我有一个具有WebBrowser控件的表单。 Onload,它导航到某个URL。 在DocumentCompleted事件处理程序上,在获取所需数据后,表单将被关闭。这大部分时间都有效,但有时它会在表单关闭后弹出一个带有相同URL的IE窗口。

我注意到在DebugView中,它记录了m_useSurfacePresenter 1。如果在调用Close()之前记录它,则没有弹出窗口。但是在调用Close()之后记录它时,会出现弹出窗口。

1 个答案:

答案 0 :(得分:0)

您需要检查该文档中的JavaScript .onunload事件,如果它被设置为在该页面卸载时打开一个新窗口(浏览器),那么当您关闭托管webbrowser控件的winform时它将被触发,反过来,页面。

因此,当你关闭winform时,webbrowser控件中的页面onUnload事件也会因为事件在Document / Page链接的方式而被触发 - > WB控制 - > WinForms表单设置。

您实际上可以将此设置为空,通过运行指向WB控件中页面的特定JS命令,您可以将.OnUnload事件设置为“function () {};”,这将确保将其设置为将变成Nothing / Null。这是一个代码示例:

  

window.onunload = function(){};

让我知道它是怎么回事,如果不解决它,我会帮助你。注意上面是JS,有很多方法可以直接从WB控件执行JS,在Web上有很多例子,实际上有两种方法,一种使用.execScript,另一种使用更新的方法,即.InvokeScript。