2012-09-25 45 views
1

我有一個具有WebBrowser控件的窗體。 Onload,它導航到一些URL。 在DocumentCompleted事件處理程序上,在獲取所需數據後,表單被關閉。這在大多數情況下都是有效的,但有時在表單關閉後彈出一個帶有相同URL的IE窗口。爲什麼在關閉WebBrowser.DocumentCompleted處理程序的窗體時彈出IE窗口

我注意到在DebugView中,它記錄了m_useSurfacePresenter 1。在調用Close()之前記錄它時,不會有彈出窗口。但是當它在調用Close()後被記錄時,彈出窗口就會出現。

回答

0

您需要檢查該文檔中的JavaScript .onunload事件,如果它被設置爲在該頁面卸載時打開一個新窗口(瀏覽器),那麼當您關閉正在託管webbrowser的winform時會觸發該事件控制,反過來,頁面。

因此,當您關閉winform時,由於事件在文檔/頁面 - > WB控件 - > WinForms窗體中鏈接的方式,頁面的web瀏覽器控件中的onUnload事件也將被觸發建立。

實際上,您可以通過在WB控件中運行指向頁面的特定JS命令來將其設置爲空,您可以將.OnUnload事件設置爲「function() {};」,這將確保設置的任何內容變成Nothing/Null。這裏是一個代碼示例:

window.onunload = function(){};

讓我知道它是怎麼回事,如果不能解決問題,我會幫助你。注意上面是JS,並且有很多方法可以通過WB Control直接執行JS,網上有很多例子,實際上有兩種方法,一種使用.execScript,另一種使用更新的方法,即.InvokeScript。