【问题标题】:Android 4.0.x (ICS) WebView does not update UI clicking <a> tagsAndroid 4.0.x (ICS) WebView 不更新 UI 点击 <a> 标签
【发布时间】:2014-09-19 12:12:59
【问题描述】:

我需要WebView来显示一个HTML页面A,页面A中有超链接标签,点击后会打开页面B。在我的 Activity 的操作栏上,我有一个 Button,单击时会调用 WebView.reload()。这应该是一个很简单的WebView案例。

问题: 在 Andorid 4.0.3 或 4.0.4 上运行我的应用程序时,单击页面 A 中的超链接(标签)后,Android WevView 停留在页面 A 上,没有任何反应。

我尝试了什么:
1.出现问题时,点击reload按钮,WevView正确显示页面B。
2.修改页面A和B的源代码,删除影响标签显示的CSS代码。那么WebView在A页面点击超链接后就可以正确跳转到B页面了。

我认为这是 Android 4.0.x 中的一个错误,在 HTML 中删除 CSS 是不可能的,我被“重新加载解决方案”卡住了。

有谁知道这个错误的根本原因或更好的解决方案? 谢谢

【问题讨论】:

  • 这个bug不能在其他安卓平台重现,只有4.0.x有这个bug

标签: android webview reload


【解决方案1】:

使用 WebChromeClient 来实现 webView 功能,它应该可以工作。即使那样,您也无法加载 html 而不是调试代码并使用替代的功能不起作用。因为 java 脚本和 CSS 都在 web 视图中工作,只有当你在 java 脚本或 css 中犯了错误时,它才会出现奇怪的行为(不是加载/空白加载/挂屏)。

【讨论】:

  • 我确实在 WebView 中设置了一个 WebChromeClient,但没有解决这个问题。
  • 我在js中注入了window.onerror,但是当问题发生时它没有被调用。此外,我认为 js 或 css 没有错误,因为 WebView.reload() 之后问题不存在
  • 您应该再检查一件事:1) 在加载 webview 之前,它首先设置为 null,然后加载 WEBVIEW 2) 在加载 web 视图 jst 调用重新加载之后。我的意思是再次调用加载和 jst 下一步调用重新加载。
【解决方案2】:

网页源中的 WORKAROUND 解决的问题,而不是 Android WebView。 在 html 正文中添加以下 javascript:

try{
    document.documentElement.clientHeight
} catch (e) {
};

上面的 js 尝试读取网页窗口高度,但它会强制刷新网页。 这个js就是这样解决这个问题的。

我猜这应该是 Android 4.0.3/4.0.4 中的一个错误。但目前您可以使用此解决方法来避免它,前提是您的 WebView 加载您开发的网页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2020-09-29
    • 2011-05-16
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多