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进去的,没有这个问题。求解决。

阅读 12.4k
2 个回答

WKWebView 的 bug 很多。你这个情况是因为 I/O 操作不是及时的,set 只是写在内存缓存里,系统在合适的时机才写磁盘。你可以设置定时器检查是否写成功。
另外,使用 localStorage 不是很可靠,既然你能通过 JS 让 iOS 打开页面,为什么不写个 iOS 方法让 JS 存取本地缓存呢,可以使用 NSUserDefaults、序列化本地文件、数据库等,更灵活,完全掌控。

新手上路,请多包涵

第二个回答是给的方案能实现, 我这边也遇见这个问题了, 通过数据共享解决了, 百度一下iOS webview 数据共享就能找得到

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题