如何知道WebBrowser控件已经完成加载包括flash在内的所有内容?

时间:2010-01-03 20:55:10

标签: c# webbrowser-control

有没有办法知道WebBrowser控件已完成加载页面?
目前我正在使用WebBrowser.ReadyState == WebBrowserReadyState.Complete 但是这表示网页内容已下载,但有时闪存尚未加载。

5 个答案:

答案 0 :(得分:3)

Flash文件加载不会将其进度报告回浏览器,所以不幸的是你无法捕获它。

答案 1 :(得分:1)

我发现最好的事情是使用计时器等待30秒的特定时间,然后加载页面。
不完美,但我想到的最好。

答案 2 :(得分:1)

如果您可以控制Flash,则可以放置一个ActionScript事件,然后将该事件传递给浏览器。

答案 3 :(得分:0)

WebBrowser控件有一个DocumentCompleted事件,您可以捕获并做出反应。我不知道是否包含Flash内容加载 - 文档不是很明确....

webBrowser1.DocumentCompleted += 
     new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

private void webBrowser1_DocumentCompleted(object sender, 
                                     WebBrowserDocumentCompletedEventArgs e)
{
   // do whatever you need to do when the document is completely loaded here
}

答案 4 :(得分:-1)

您可以尝试这种方式:

bool loadingPage = true;

private void Browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     if (this.ReadyState != WebBrowserReadyState.Complete) return;
     if ((e.Url.AbsolutePath == "blank") || (e.Url != this.Url)) return;
     if (this.Document.Body.All.Count < 20) return;
     loadingPage = false
}

private void WaitPageLoad()
{
     //To avoid waiting forever. You can add timer here.
     while(loadingPage)
     {
     }
}