DocumentCompleted多次触发 – 接受StackOverflow回答不起作用

我测试我的WebBrowser是否完成了:

webBrowser2.DocumentCompleted += (s, e) => { // Do stuff } 

我访问的网页是大量的JS文件和iframe和东西,所以我使用下面的函数来确保它是完成加载的实际页面。

 webBrowser2.DocumentCompleted += (s, e) => { if (e.Url.AbsolutePath != (s as WebBrowser).Url.AbsolutePath) { return; } // Do stuff } 

但是,它似乎仍然无法正常工作。 我做错了什么,或者这在语法上是否正确,我的代码中还有其他错误?

由于多种原因(frame,ajax等), DocumentComplete可能会被多次触发。 同时,对于特定文档, window.onload事件将仅触发一次。 所以,也许,你可以在window.onload进行处理。 我刚刚回答了一个关于如何做到的相关问题 。

我用这个(从SO的回答到类似的问题):

 void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath) return; //The page has finished loading. } 

只需检查e.Url.AbsolutePath是您导航到的实际url。

if(e.Url.AbsolutePath == TheActualURLString){//这是你的实际页面下载完成}