Android webView点击h5中按钮后加载不出来之后的页面(loading状态或者空白页面)解决之法

之前项目中遇到一个问题,项目中webView加载h5广告,在h5中提交数据时,竟然一直显示loading而不加载提交成功界面,在此记录一下解决之法,分享给遇到同样问题的伙伴们。

运维人员提交这个问题后,第一时间考虑的是,测试原始链接在手机浏览器加载中是否正常?ios是否可以?

然而,经过简单的运行测试,只有android端会出现此类问题(现象),怎么办呢?Debug看!

首先检查一下代码,有没有设置支持js 等等设置。。。

webView.getSettings().setJavaScriptEnabled(true);

在看不出代码有什么纰漏的情况下,使用 Android studio自带的工具logcat打印日志看看信息,捕获到一条log:

chromium: [INFO:CONSOLE(1)] "[Vue warn]: Error in mounted hook: "TypeError: Cannot read property 'getItem' of null"                                                                                                                          (found in)", source: 要加载的h5链接 (1)

然后打开上面报的source:后面的url  搜索一下getItem看看是什么鬼?没搜到,那就带着问题上网搜,记录下我看到解答。

google搜索:h5中"getItem() of null" 然后回车键搜索。。。

找到问题:h5本地数据持久化存储的问题。

解释原因

DOM storage 是HTML5提供的一种标准接口,主要将键值对存储在本地,在页面加载完毕后可以通过JavaScript来操作这些数据,但是Android 默认是关闭这个功能的,则导致H5页面加载失败。

解决方法:通过WebSetting设置开启(DOM Storage功能)

webView.getSettings().setDomStorageEnabled(true);

还有一种情况加载也是空白页面顺便也记录一下:

如商品详情页,h5链接https而内容图片为http时,5.0以上系统也会遇到加载不出来的情况,解决之法:

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) {

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}

设置好了运行,测试OK    觉得有帮助到你,随手点个赞~

你可能感兴趣的:(Android webView点击h5中按钮后加载不出来之后的页面(loading状态或者空白页面)解决之法)