首页 > 解决方案 > 是否可以保存 WKWebview 内容以供离线阅读?

问题描述

我需要保存 WKWebView 上加载的内容以供离线阅读,包括图像。然后,即使没有网络访问,用户也可以再次查看网页。

WKWebView 支持缓存吗?我该如何实施?

“用于离线查看的 UIWebView 网页缓存”中的答案是针对 UIWebview 而不是针对 WKWebView,因此它们是不同的。而且我也知道我们可以为 WKWebViewCache 启用应用程序缓存,但它将使用私有 API,这将被拒绝。

标签: iosswift

解决方案


 //Two ways i know so far
//1st : after loading the page when user is online,get the html from WKWebView as follows :




webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", 
                           completionHandler: { (html: Any?, error: Error?) in
    print(html)
})




//Second way is that inject script to get html from WKWebView as follows>

 let script = WKUserScript(source: javascriptString, injectionTime: injectionTime, forMainFrameOnly: true)
userContentController.addUserScript(script)
self.webView.configuration.userContentController.addScriptMessageHandler(self, name: "didGetHTML")
func userContentController(userContentController: WKUserContentController,
        didReceiveScriptMessage message: WKScriptMessage) { if message.name == "didGetHTML" {
            if let html = message.body as? String {
                print(html)
            }
        }
}

推荐阅读