Share/Reload localStorage、IndexedDB、WKWebViews 之间的 cookie
Share/Reload localStorage, IndexedDB, cookies between WKWebViews
有一个带有 WKWebView "Parent" 的控制器打开(推送)另一个带有另一个 WKWebView "Child" 的控制器。
当 Child
修改 localStorage、sessionStorage 或 IndexedDB 然后弹回到 Parent
时,Parent
不知道更改,需要重新加载才能看到新值集通过 Child
.
这意味着两个WKWebView共享相同的localStorage、sessionStorage、indexedDB,但是它们需要刷新内容才能看到修改。
如何在WKWebView之间实时共享同一个存储?
WKWebViews 的init 可以接收一个参数WKWebViewConfiguration
和一个名为processPool
的变量,它代表所有的web 内容(包括localStorage、IndexedDB、cookies 等等)进程。
因此,为了让 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)
有一个带有 WKWebView "Parent" 的控制器打开(推送)另一个带有另一个 WKWebView "Child" 的控制器。
当 Child
修改 localStorage、sessionStorage 或 IndexedDB 然后弹回到 Parent
时,Parent
不知道更改,需要重新加载才能看到新值集通过 Child
.
这意味着两个WKWebView共享相同的localStorage、sessionStorage、indexedDB,但是它们需要刷新内容才能看到修改。
如何在WKWebView之间实时共享同一个存储?
WKWebViews 的init 可以接收一个参数WKWebViewConfiguration
和一个名为processPool
的变量,它代表所有的web 内容(包括localStorage、IndexedDB、cookies 等等)进程。
因此,为了让 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)