两个WKWebView共享本地存储,但仅在重新启动后才能共享

时间:2016-03-31 11:32:11

标签: ios ios9 wkwebview

我有两个WKWebView AB都加载了本地file://。这是我看到的行为:

  • A中,设置localStorage.setItem('test', true)
  • B中,阅读返回localStorage.setItem('test')
  • undefined
  • 重新启动B
  • B中,阅读返回localStorage.setItem('test')
  • true

因此AB似乎共享本地存储,但不实时同步。这对我来说很奇怪。为什么两个WKWebView之间的本地存储实时同步?

1 个答案:

答案 0 :(得分:0)

您需要在WKWebView之间共享一个独特的WKProcessPool。

let uniqueProcessPool = WKProcessPool()

let configA = WKWebViewConfiguration()
configA.processPool = uniqueProcessPool
let webViewA = init(frame: CGRect.zero, configuration: configA)

let configB = WKWebViewConfiguration()
configB.processPool = uniqueProcessPool
let webViewB = init(frame: CGRect.zero, configuration: configB)

如果没有这个,它会感觉好像WKWebView使用了一个中央ProcessPool的副本而不是对它的引用访问。这解释了为什么您没有实时看到更改,并且需要重新加载视图。