2014-02-11 102 views
2

我使用WebBrowser控件,有一个名为DocumentCompleted的事件,此事件针对网页中的每个框架以及所有子文档(例如JS和CSS)。检测网页何时满载网页浏览器控件c#

我的问题是如何检测这个事件的最后一个条目,我的意思是如何检测页面何时被完全加载,并且这个事件不会再次触发。

我看了这个有很多,我发现这样一个解决方案:

void webBrowser1_DocumentCompleted(object sender, 
     WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (e.Url.Equals(webBrowser1.Url)) { 
     // Here the page is fully loaded   
    } 
} 

但这并不适用于所有的网址工作!

任何人都有一个想法如何实现?

thanx提前

+0

鉴于通过Javascript进行附加服务器查询的网站数量在加载页面后很难得到正确的结果。 – Crono

+0

您可以在第一次点击DocumentCompleted后解除绑定事件,以确保它仅被触发一次。然后重新调用webBrowser1.Navigate(url)之前重新绑定; – scheien

+0

也许,这可以帮助http://stackoverflow.com/questions/635948/c-sharp-webbrowser-control-get-document-elements-after-ajax –

回答

2

DocumentComplete事件可以用于与框架的文档被解雇多次。与此同时,对于特定的文档,HTML DOM window.onload事件将仅被触发一次。 Here is how使用这个事实来处理首页加载的完成。

OTOH,有些页面相当复杂,并且使用连续的AJAX更新。严格地说,并不总是有可能确定一个像这样的页面何时完成其渲染,具有100%的可能性。但是,您可以关闭,here is how