刷新或再次导航后,C#WebBrowser.DocumentText不会更新

时间:2016-05-25 20:12:22

标签: c# .net refresh webbrowser-control

我会尽量简单。当我的程序启动时,WebBrowser导航到URL。完成加载后,我使用事件webBrowser_DocumentCompleted来测试if (webBrowser.ReadyState == WebBrowserReadyState.Complete)。如果为true,我使用stringHtml = webBrowser.DocumentText;从WebBrowser中提取html,然后进行一些HTML解析以提取我需要的信息。 (基本上,我需要在该页面中检索一些日期/小时记录并显示它们)。但是当有人添加另一个日期/小时记录时,URL的HTML会发生变化。添加其他记录后,用户单击程序中的按钮,它将再次执行工作:导航到URL,提取HTML,解析并执行操作。

发生了什么:在我的计算机中它工作正常,但对于其他人来说刷新/导航再次没有捕获新记录。它带来了上次请求时的相同HTML。我认为WebBrowser有一些缓存系统。我已经尝试过了:

  • 在再次检索webBrowser.Refresh(WebBrowserRefreshOption.Completely)之前执行DocumentText;
  • 在上面的选项之前
  • webBrowser.Document.OpenNew(true);
  • Navigate("about:blank") + Document.Write(String.Empty)然后导航(myURL)
  • WebBrowser.Dispose()然后创建一个新的,然后导航
  • 我将Chrome视为默认浏览器,其他人使用IE浏览器,因此我尝试将其默认设置更改为Chrome(虽然我认为无关紧要)

代码看起来像这样:

private void btnGetHTML_Click(object sender, EventArgs e)
{
    webBrowser1.Document.OpenNew(true);
    webBrowser1.Refresh(WebBrowserRefreshOption.Completely);

    webBrowser1.Navigate(MyURL); // because Refresh doesn't fire DocumentCompleted event
}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
    {
        stringHtml = webBrowser1.DocumentText;
        DoStuff();
    }
}

private void DoStuff()
{
    // For example, if I write stringHtml in a file just to check it, it will not be updated for some users
}

这些解决方案都不适用于其他解决方案,但它对我来说仍然有效。这是一个缓存问题吗?我该怎么做才能获得HTML的更新版本?

0 个答案:

没有答案