我一直在研究这些东西,每个人似乎都同意解决方案是检查ReadyStateWeb浏览器,直到设置为Complete.
但事实上,有时会将事件触发ReadyState多次设置为完成.
我不认为有一个蹩脚的.NET WebBrowser的解决方案,但如果我使用底层DOM组件可能会有一个.
唯一的问题是,我不知道如何访问触发DocumentCompleted事件的WebBrowser后面的DOM组件.
Han*_*ant 32
DocumentCompleted将为网页中的每个帧触发.很难的方法是计算帧数,向您展示如何访问DOM:
private int mFrameCount;
private void startNavigate(string url) {
mFrameCount = 0;
webBrowser1.Navigate(url);
}
private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
mFrameCount += 1;
bool done = true;
if (webBrowser1.Document != null) {
HtmlWindow win = webBrowser1.Document.Window;
if (win.Frames.Count > mFrameCount && win.Frames.Count > 0) done = false;
}
if (done) {
Console.WriteLine("Now it is really done");
}
}
Run Code Online (Sandbox Code Playgroud)
简单的方法是检查完成加载的URL:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.Equals(webBrowser1.Url)) {
Console.WriteLine("Now it is really done");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11088 次 |
| 最近记录: |