Yuv*_*led 11 html c# browser mshtml
我正在使用.NET WebBrowser控件.我怎么知道网页何时满载?
我想知道浏览器什么时候不提取任何数据.(当IE在状态栏中写'完成'时......).
笔记:
这最终对我有用:
public bool WebPageLoaded
{
get
{
if (this.WebBrowser.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete)
return false;
if (this.HtmlDomDocument == null)
return false;
// iterate over all the Html elements. Find all frame elements and check their ready state
foreach (IHTMLDOMNode node in this.HtmlDomDocument.all)
{
IHTMLFrameBase2 frame = node as IHTMLFrameBase2;
if (frame != null)
{
if (!frame.readyState.Equals("complete", StringComparison.OrdinalIgnoreCase))
return false;
}
}
Debug.Print(this.Name + " - I think it's loaded");
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
在每个文档完成事件中,我都会运行所有 html 元素并检查所有可用的框架(我知道它可以优化)。对于每一帧,我检查其就绪状态。它非常可靠,但就像 jeffamaphone 所说的那样,我已经看到触发一些内部刷新的网站。但上面的代码已经满足我的需求了。
编辑:每个帧都可以包含其中的帧,因此我认为应该更新此代码以递归地检查每个帧的状态。