如何在 _web_ProgressChanged 运行后获取 DocResult ?
public class WebHelper
{
WebBrowser _web = null;
public string DocResult = string.Empty;
public WebHelper(string url)
{
_web = new WebBrowser();
_web.ProgressChanged += _web_ProgressChanged;
_web.Navigate(url);
}
void _web_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
DocResult = _web.Document.Body.InnerHtml;
}
}
class MyWork
{
public string GetDocContent(string url)
{
WebHelper wh = new WebHelper(url);
return wh.DocResult;
}
}
如何在 _web_ProgressChanged 运行后获取 DocResult ?
答案 0 :(得分:2)
_web_ProgressChanged运行后如何获取DocResult?
你没有。 ProgressChanged至少在十年前就不再有用了提供任何反馈。在20世纪90年代,当浏览器通过低速电话调制解调器连接到互联网服务提供商时,它仍然有些意义。并且网页仍然非常鲜明,标记和样式很少,因此用户无需等待分钟来加载网页。然后,ProgressChanged可用于驱动进度条以指示他需要等待多长时间。
这已经结束了,今天的网页是通过许多数据传输构建的。容易打了十几个,总计数百千字节。一些从Web服务器本身传输数据,一些来自CDN,一些来自第三方服务器,用于分析等事情。有些是html,有些是css,有些是javascript,有些是图像。每个发痒的ProgressChanged,它在网页忙于加载时发生巨大变化。浏览器不再显示进度,只是一个微调器。
ProgressChanged事件与DOM的状态之间没有任何关联,从来没有连接。在尝试使用Document
属性之前,您必须使用DocumentCompleted事件。