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

本文关键字:StackOverflow 不起作用 DocumentCompleted | 更新日期: 2023-09-27 18:28:24

我测试我的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    
}   

然而,它似乎仍然不起作用。我是做错了什么,还是语法正确,而我的代码中还有其他错误?

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

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

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

DocumentComplete可能由于多种原因(帧、ajax等)而被多次激发。同时,对于特定文档,window.onload事件将只触发一次。因此,也许您可以在window.onload上进行处理。我刚刚回答了一个关于如何做到这一点的相关问题。

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

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