Android网页内容改变后WebView不刷新
Android WebView not refreshing after webpage content changes
我的应用程序在 Android 网络视图中显示网页内容。
该网页由第 3 方团队设计,因此我无法控制设计或源代码。该网页首先显示某种动画,然后以实际内容刷新(正常 UI 设计)。但是我的网络视图永远不会超出初始动画。
请注意,我已验证网页在同一设备上的浏览器上是否正确加载。所以网页肯定没有问题。
此外,我在延迟 5 秒后以编程方式刷新了 webview(在桌面浏览器上,网页刷新实际内容大约需要 1-2 秒),这应该是延迟刷新的原因。
现代网页 (HTML 5 + CSS3 + JS) 是否存在任何可能导致它们无法在 Android webview 上正确呈现的已知问题?我可以退回到什么?
我是否缺少在 Webview 上设置任何 属性?
下面是我的代码片段 -
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 字符串等,但没有任何效果。
只是为了结束这个问题以供 SO 探索者将来参考,答案来自 praveen 的赞成评论。
诀窍是使用
settings.setDomStorageEnabled(真)
注意:虽然根据我的意见,随着 HTML5 成为现代网页所基于的事实上的标准之一,默认情况下应该在 Android webviews 上启用此设置(以便默认情况下,webview 的行为与现代浏览器的行为方式相同)
应该有下面两个设置来避免 webview 缓存更新页面而不刷新
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);
试试这个
webView.loadDataWithBaseURL(null, htmlContent, "text/html", "UTF-8", null)
我的应用程序在 Android 网络视图中显示网页内容。 该网页由第 3 方团队设计,因此我无法控制设计或源代码。该网页首先显示某种动画,然后以实际内容刷新(正常 UI 设计)。但是我的网络视图永远不会超出初始动画。
请注意,我已验证网页在同一设备上的浏览器上是否正确加载。所以网页肯定没有问题。 此外,我在延迟 5 秒后以编程方式刷新了 webview(在桌面浏览器上,网页刷新实际内容大约需要 1-2 秒),这应该是延迟刷新的原因。
现代网页 (HTML 5 + CSS3 + JS) 是否存在任何可能导致它们无法在 Android webview 上正确呈现的已知问题?我可以退回到什么? 我是否缺少在 Webview 上设置任何 属性?
下面是我的代码片段 -
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 字符串等,但没有任何效果。
只是为了结束这个问题以供 SO 探索者将来参考,答案来自 praveen 的赞成评论。
诀窍是使用 settings.setDomStorageEnabled(真)
注意:虽然根据我的意见,随着 HTML5 成为现代网页所基于的事实上的标准之一,默认情况下应该在 Android webviews 上启用此设置(以便默认情况下,webview 的行为与现代浏览器的行为方式相同)
应该有下面两个设置来避免 webview 缓存更新页面而不刷新
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setDomStorageEnabled(true);
试试这个
webView.loadDataWithBaseURL(null, htmlContent, "text/html", "UTF-8", null)