WebBrowser DocumentCompleted事件多次触发
我一直在研究这些东西,似乎每个人都同意解决方案是检查ReadyStateWeb浏览器的,直到将其设置为Complete。
但实际上,有时会将事件ReadyState设置为“完成”时会触发多次。
我认为没有那种糟糕的.NET WebBrowser解决方案,但是如果我使用底层DOM组件,可能会有解决方案。
唯一的问题是,我不知道如何访问触发DocumentCompleted事件的WebBrowser之后的DOM组件。
回答:
网页中的每个框架都会触发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");
  }
}
简单的方法是检查完成加载的URL:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){
    if (e.Url.Equals(webBrowser1.Url)) {
        Console.WriteLine("Now it is really done");
    }
}
以上是 WebBrowser DocumentCompleted事件多次触发 的全部内容, 来源链接: utcz.com/qa/421213.html







