【问题标题】:Disable WebBrowser caching禁用 WebBrowser 缓存
【发布时间】:2014-08-12 09:07:35
【问题描述】:

我是新来的,非常希望得到您的帮助。 我一直在尝试禁用我的网络浏览器的缓存,但我得到重载解析失败,因为没有缩小转换没有可访问的“导航”。我被困住了,我不知道该怎么办了,我确实搜索了所有可能的解决方案,但没有找到答案。 这是我的代码:

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Const navNoReadFromCache As Long = 4
        Const navNoHistory As Long = 2
        Const navNoWriteToCache As Long = 8
        Dim navflags As Long
        navflags = navNoHistory + navNoWriteToCache
        WebBrowser1.Navigate("url", 4)
    End Sub
End Class

原来的错误信息是:

错误 2 重载解析失败,因为没有缩小转换就无法调用可访问的“导航”:

'Public Sub Navigate(urlString As String, newWindow As Boolean)': Argument matching parameter 'newWindow' narrows from 'Integer' to 'Boolean'.

'Public Sub Navigate(urlString As String, targetFrameName As String)': Argument matching parameter 'targetFrameName' narrows from 'Integer' to 'String'.

【问题讨论】:

  • 代码是VB,但问题是关于C++的。这里缺少一些东西。
  • 你想让你的4参数做什么?错误消息告诉您要对 4 执行的操作不正确。
  • 我希望我的四个人停止读取缓存。整个想法是阻止我的浏览器读取和写入缓存,因为我得到一个黑屏。
  • 我认为您使用了错误的参考资料。 System.Windows.Forms.WebBrowser 不采用 Long 或 Int 参数作为 Navigate 方法(按 F2 并搜索 WebBrowser)。你可能读过一些 VB6 或 MSHTML 的东西。
  • 也许你是对的,但整个目的是让我的 webbrowser1 停止读取和保存缓存,我该怎么做?

标签: vb.net webbrowser-control browser-cache flash navigateurl


【解决方案1】:

.NET WebBrowserControl 没有接受 int 或 long 参数的重载。 因此,您不能将 BrowserNavConstants (this for IWebBrowser2 not .NET WebBrowserControl) 值设置为 .NET WebBrowserControl。


我找到了以下页面:

http://msdn.microsoft.com/en-us/library/40x214wa%28v=vs.110%29.aspx

WebBrowser 控件将来自最近访问的站点的网页存储在本地硬盘的缓存中。每个页面都可以指定一个过期日期,指示它将在缓存中保留多长时间。当控件导航到一个页面时,它会通过显示缓存版本(如果可用)而不是再次下载该页面来节省时间。

使用 Refresh 方法强制 WebBrowser 控件通过下载来重新加载当前页面,确保控件显示最新版本。


已更新。 我尝试以下代码,看起来工作正常:

    private void button1_Click(object sender, EventArgs e) {
        webBrowser1.Navigate("http://www.google.co.jp");
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
    }

这会加载页面两次。

【讨论】:

  • 当我黑屏时我一直在使用这个 wb1.Refresh(WebBrowserRefreshOption.Completely) 但它什么也没做。我已将此注册到一个按钮。
  • 黑色?嗯...我认为,默认背景颜色是白色。刷新后看到wb1.DocumentText了吗?
  • 没错,我发现这是临时文件的原因。我为此使用了 ccleaner,每次我清理 flash player 和 IE temps 时,它都会重新开始工作。但这并不能解决我的问题,我希望我的网络浏览器停止存储此类数据。
  • 更准确地说,我想加载一个具有 .html 并且内容在 java .swf 上运行的网站。我得到的黑屏是加载屏幕。
  • 我认为这是 Flash Player 的 chache 问题,而不是 WebBrowserControl。
【解决方案2】:

所以经过一段时间的搜索和测试不同的方法,我得到了一个很好的结果。

Shell("RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8", vbHide)

这是我用来删除将我的网络浏览器保持在黑屏状态的缓存的代码。 它的作用是搜索 Internet Explorer 的临时文件并删除它们,vbHide 必须放在逗号旁边才能工作,它所做的是隐藏弹出我们告诉您它删除临时文件的窗口。

【讨论】:

    猜你喜欢
    • 2011-03-26
    • 2012-07-12
    • 2018-02-04
    • 2010-12-09
    • 2015-08-09
    • 2017-07-13
    • 2011-03-11
    • 2011-11-03
    • 2013-11-15
    相关资源
    最近更新 更多