首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript - evaluateJavaScript vs addUserScript

Javascript - evaluateJavaScript vs addUserScript
EN

Stack Overflow用户
提问于 2017-01-05 15:13:47
回答 2查看 7.4K关注 0票数 9

我试图理解使用WKWebview执行javascript的最佳方法。

请有人告诉我使用WKWebView时的用例/最佳实践。

什么时候使用WKScriptMessageHandleraddUserScript,什么时候使用evaluateJavaScript

代码语言:javascript
复制
    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

代码语言:javascript
复制
let myScript
self.wkWebView.evaluateJavaScript(script) { (result, error) in
    if error != nil {
        print("\(error)")
    }
}
EN

回答 2

Stack Overflow用户

发布于 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片段。

票数 9
EN

Stack Overflow用户

发布于 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中不存在的很酷的东西

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41488423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档