wkwebview localstorage问题
有两个view,它们里面都有一个wkwebview,对应两个页面a.html和b.html,a能打开b,b能退回到a;首先打开a,a里面有一个按钮,点击按钮的时候往localstorage里面set数据(new Date().getTime()),然后JS调用原生IOS代码打开b页面,b页面加载好后再从localstorage里面取a页面set的数据,发现取到的数据是旧的,是上一次a页面set进去的数据,而且奇怪的是如果a页面往localstorage set完数据后延迟2秒再打开b页面,取到的数据是则刚刚set进去的,没有这个问题。求解决。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
WKWebView
的 bug 很多。你这个情况是因为 I/O 操作不是及时的,set
只是写在内存缓存里,系统在合适的时机才写磁盘。你可以设置定时器检查是否写成功。另外,使用 localStorage 不是很可靠,既然你能通过 JS 让 iOS 打开页面,为什么不写个 iOS 方法让 JS 存取本地缓存呢,可以使用
NSUserDefaults
、序列化本地文件、数据库等,更灵活,完全掌控。第二个回答是给的方案能实现, 我这边也遇见这个问题了, 通过数据共享解决了, 百度一下iOS webview 数据共享就能找得到