我试图理解使用WKWebview执行javascript的最佳方法。
请有人告诉我使用WKWebView时的用例/最佳实践。
什么时候使用WKScriptMessageHandler和addUserScript,什么时候使用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)")
}
}发布于 2017-01-26 09:20:27
找到一个很好的解释
http://jonathanblog2000.blogspot.co.il/2016/11/understanding-ios-wkwebview.html
2.3.2将本机代码中的javascript注入到js 强调的文本WKUserContentController中,允许在DOM树开始加载或完成加载时添加(并删除) WKUserScript。相反,evaluateJavaScript允许应用程序随时在上按需执行javascript片段。
发布于 2017-01-16 23:52:36
根据我的经验,WKUserScript似乎拥有更多的特权,例如: document.cookie="test=test“与WKUserScript一起工作,但与evaluateJavaScript无关。
但是,为了运行注入的javascript,WKUserScript需要额外的重载()。可能是个窃听器。有时它会使代码复杂化。
WKScriptMessageHandler是另一回事。它允许您的本地应用程序接收来自javascript的消息。例如,您可以添加一个处理程序并接收来自javascript的消息,如:"window.webkit.messageHandlers.notification.postMessage({body:“.”};“参考:http://nshipster.com/wkwebkit/
UIWebView中不存在的很酷的东西
https://stackoverflow.com/questions/41488423
复制相似问题