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

sir*_*day 6 c# browser url webbrowser-control

我测试我的WebBrowser是否完成:

webBrowser2.DocumentCompleted += (s, e) =>
{
    // Do stuff  
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Thu*_*orm 7

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

void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
        return; 

    //The page has finished loading.
}
Run Code Online (Sandbox Code Playgroud)


nos*_*tio 5

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