【问题标题】:Share/Reload localStorage, IndexedDB, cookies between WKWebViews在 WKWebViews 之间共享/重新加载 localStorage、IndexedDB、cookie
【发布时间】:2017-08-26 20:02:45
【问题描述】:
有一个带有 WKWebView“父”的控制器打开(推动)另一个带有另一个 WKWebView“子”的控制器。
当Child 修改localStorage、sessionStorage 或IndexedDB 然后弹回到Parent 时,Parent 不知道这些更改,需要重新加载才能看到Child 设置的新值。
这意味着两个 WKWebView 共享同一个 localStorage、sessionStorage、indexedDB,但是它们需要刷新内容才能看到修改。
WKWebView之间如何实时共享同一个存储?
【问题讨论】:
标签:
ios
swift
local-storage
indexeddb
wkwebview
【解决方案1】:
WKWebViews 的 init 可以接收一个参数WKWebViewConfiguration 和一个名为processPool 的变量,它代表了所有的Web 内容(包括localStorage、IndexedDB、cookie 等)进程。
所以为了让 WKWebViews 实时共享所有的内存管理,你需要为它们声明一个唯一的 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)