WKWebView:localStorage在window.close上变为null
我在WKWebView中有一些第三方内容,它试图在窗口关闭时从localStorage读取。WKWebView不会在window.close上触发任何事件,因此我自己在WKWebView:localStorage在window.close上变为null,wkwebview,Wkwebview,我在WKWebView中有一些第三方内容,它试图在窗口关闭时从localStorage读取。WKWebView不会在window.close上触发任何事件,因此我自己在webViewDidClosedelegate方法中执行此操作 问题是,只要执行window.close(),localStorage就会变为null!这不会发生在桌面浏览器窗口中。有趣的是,只有本地存储丢失,会话存储仍然可以访问 在Safari inspector控制台中: onunload=function() { d
webViewDidClose
delegate方法中执行此操作
问题是,只要执行window.close()
,localStorage就会变为null!这不会发生在桌面浏览器窗口中。有趣的是,只有本地存储丢失,会话存储仍然可以访问
在Safari inspector控制台中:
onunload=function() {
debugger;
// localStorage is null
// sessionStorage is Storage
}
close();
在本地方面:
func webViewDidClose(_ webView: WKWebView) {
// Trigger the unload event before closing the web view
webView.evaluateJavaScript("dispatchEvent(new Event('unload'));")
// Give the content some time to respond to the event, and then destroy the web view
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) {
self.webView?.removeFromSuperview();
self.webView = nil
}
}