如何在事件运行后获取文档正文内容(WebBrowser控件)

时间:2014-08-17 07:15:06

标签: c# class events operation

如何在 _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

1 个答案:

答案 0 :(得分:2)

  

_web_ProgressChanged运行后如何获取DocResult?

你没有。 ProgressChanged至少在十年前就不再有用了提供任何反馈。在20世纪90年代,当浏览器通过低速电话调制解调器连接到互联网服务提供商时,它仍然有些意义。并且网页仍然非常鲜明,标记和样式很少,因此用户无需等待分钟来加载网页。然后,ProgressChanged可用于驱动进度条以指示他需要等待多长时间。

这已经结束了,今天的网页是通过许多数据传输构建的。容易打了十几个,总计数百千字节。一些从Web服务器本身传输数据,一些来自CDN,一些来自第三方服务器,用于分析等事情。有些是html,有些是css,有些是javascript,有些是图像。每个发痒的ProgressChanged,它在网页忙于加载时发生巨大变化。浏览器不再显示进度,只是一个微调器。

ProgressChanged事件与DOM的状态之间没有任何关联,从来没有连接。在尝试使用Document属性之前,您必须使用DocumentCompleted事件。