解决WebView写入localstorage但首次加载取不到值的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决WebView写入localstorage但首次加载取不到值的问题相关的知识,希望对你有一定的参考价值。

参考技术A

本文虽然写的是解决android写localstorage的问题,但是对于ios同样适用。

在android中,native经常需要和h5页面进行交互,比如将本地token写入h5,然后h5中的js获取token进行api请求。

写入localstorage的方法很标准,即在webview的onPageFinished中注入并调用一段js即可。

但是这样做有个问题,就是token注入是在页面加载完毕之后进行,而页面加载完毕,页面中的js也就基本执行完毕了,所以页面中原有的js执行获取token是获取不到的。

一种解决方法就是在h5内判断token是否为空,如果是则重新刷新页面。因为token为空是在首次加载页面时发生的,所以也只有在首次加载页面时会重新刷新,只有首次加载页面成功,写入localstorage,后面获取localstorage都不会失败了。

还有一种方法就是 在登录或者注册成功后 ,或者首次进入本地主页面时,隐式的创建一个webview并访问目标根url,将localstorage预先写入。注意,根目标url一定要以/结尾,比如 https://www.baidu.com/

以上是关于解决WebView写入localstorage但首次加载取不到值的问题的主要内容,如果未能解决你的问题,请参考以下文章

android 中 webview 怎么用 localStorage

android 中 webview 怎么用 localStorage

android 中 webview 怎么用 localStorage

在 webView 和 CordovaWebView android 之间共享 localStorage

使用 webview 时,Android 上的 HTML localStorage 为空

iOS 7 webview 和 localStorage 持久化