Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WKWebView:localStorage在window.close上变为null_Wkwebview - Fatal编程技术网

WKWebView:localStorage在window.close上变为null

WKWebView:localStorage在window.close上变为null,wkwebview,Wkwebview,我在WKWebView中有一些第三方内容,它试图在窗口关闭时从localStorage读取。WKWebView不会在window.close上触发任何事件,因此我自己在webViewDidClosedelegate方法中执行此操作 问题是,只要执行window.close(),localStorage就会变为null!这不会发生在桌面浏览器窗口中。有趣的是,只有本地存储丢失,会话存储仍然可以访问 在Safari inspector控制台中: onunload=function() { d

我在WKWebView中有一些第三方内容,它试图在窗口关闭时从localStorage读取。WKWebView不会在window.close上触发任何事件,因此我自己在
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
    }
}