【问题标题】:Android WebView not refreshing after webpage content changes网页内容更改后Android WebView不刷新
【发布时间】:2017-05-14 11:57:22
【问题描述】:

我的应用程序在 Android webview 中显示网页的内容。 该网页由第 3 方团队设计,因此我无法控制设计或源代码。网页开始显示某种动画,然后刷新实际内容(正常的 UI 设计)。但是我的 webview 永远不会超出初始动画。

请注意,我已验证网页在同一设备上的浏览器上正确加载。所以网页肯定没有问题。 此外,我在延迟 5 秒后以编程方式刷新了 webview(在桌面浏览器上,网页大约需要 1-2 秒来刷新实际内容),这应该是延迟刷新的原因。

现代网页(HTML 5 + CSS3 + JS)是否有任何已知问题可能导致它们无法在 Android webview 上正确呈现?我可以回退到什么? 我是否缺少在 Webview 上设置任何属性?

下面是我的代码的 sn-p -

myWebView = (WebView)v.findViewById(R.id.catalog_view);
WebSettings settings = myWebView.getSettings();
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
myWebView.loadUrl("https://www.homehardware.com.au/catalogue/?category=garden-outdoor");

注意:代码中提到的 URL 是我尝试加载的实际 URL。我还尝试了其他一些事情,比如摆弄 webview 缓存模式、UA 字符串等,但没有任何效果。

【问题讨论】:

  • 添加这一行“settings.setDomStorageEnabled(true);”并检查。
  • 这很有魅力。我已经尝试了几乎所有的方法,我想我还得再尝试一些:)
  • 你在玩 HTML5 故事情节吗?这些基本上是嵌入在 html 内容中的视频。
  • 正如我在问题中提到的,该网站是由第 3 方设计的,因此我不确定他们是否使用 HTML5 故事情节。我在我的问题中提供了链接。如果您有兴趣,请查看源代码

标签: android android-webview


【解决方案1】:

下面两个设置应该有避免webview缓存来更新页面而不刷新

settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);

【讨论】:

    【解决方案2】:

    只是为了结束这个问题以供 SO 探索者将来参考,答案来自 praveen 的赞成评论。

    诀窍是使用 settings.setDomStorageEnabled(true)

    注意:尽管在我看来,随着 HTML5 成为现代网页所基于的事实标准之一,此设置应默认在 Android webviews 上启用(因此 webviews 默认行为方式与现代浏览器一样)

    【讨论】:

    • 存储API怎么和问题有关?
    【解决方案3】:

    试试这个

    webView.loadDataWithBaseURL(null, htmlContent, "text/html", "UTF-8", null)
    

    webView.loadDataWithBaseURL

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多