WKWebView:localStorage在window.close上为空

时间:2018-08-21 00:14:15

标签: wkwebview

我在WKWebView中有一些第三方内容,试图在关闭窗口时从localStorage读取。 WKWebView不会在window.close上触发任何事件,所以我自己在webViewDidClose委托方法中进行此操作。

问题在于,一旦执行window.close(),localStorage就会为空!在桌面浏览器窗口中不会发生这种情况。有趣的是,只有localStorage丢失了,sessionStorage仍然可以访问。

在Safari检查器控制台中:

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
    }
}

0 个答案:

没有答案