我正在尝试了解使用WKWebview执行javascript的最佳方法
有人可以在使用WKWebView时向我提供用例/最佳实践。
何时使用 addUserScript 和 WKScriptMessageHandler 以及何时使用 evaluateJavaScript
let jscript = "my script"
let userScript = WKUserScript(source: jscript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
let userContentController = WKUserContentController()
userContentController.addUserScript(userScript)
let webViewConfiguration = WKWebViewConfiguration()
webViewConfiguration.userContentController = userContentController
webView = WKWebView(frame: self.view.bounds, configuration: webViewConfiguration)
VS
let myScript
self.wkWebView.evaluateJavaScript(script) { (result, error) in
if error != nil {
print("\(error)")
}
}
答案 0 :(得分:4)
找到一个很好的解释
http://jonathanblog2000.blogspot.co.il/2016/11/understanding-ios-wkwebview.html
2.3.2将javascript从本机代码注入js DOM 强调文字 WKUserContentController允许在DOM树开始加载或完成加载时添加(和删除)要注入的WKUserScript。相反,evaluateJavaScript允许应用程序在 任何 时按需执行javascript代码段。
答案 1 :(得分:2)
根据我的经验,WKUserScript似乎有更多特权,例如: 的document.cookie ="测试测试="适用于WKUserScript但不适用于evaluateJavaScript。
但是,WKUserScript需要为您注入的javascript运行额外的reload()。这可能是一个错误。有时它会使代码复杂化。
WKScriptMessageHandler是一个单独的东西。它允许您的本机应用程序从JavaScript接收消息。例如,你可以添加一个处理程序并接收从javascript发布的消息,例如:" window.webkit.messageHandlers.notification.postMessage({body:" ..."});&# 34; 请参阅:http://nshipster.com/wkwebkit/
UIWebView中不存在的非常酷的东西