【问题标题】:Using JavaScript with WkWebView - error on UserMessageHandler将 JavaScript 与 WkWebView 一起使用 - UserMessageHandler 上的错误
【发布时间】:2019-08-05 23:57:13
【问题描述】:

通过Javascript向iOS发送消息时,我遇到了这个在网上找不到任何信息的错误消息:“Can only call UserMessageHandler.postMessage on instances of UserMessageHandler”。

我正在使用 webview 在 iOS 上呈现网页。

我尝试从本机代码添加相同的脚本并且我能够接收到消息。但是,如果我将其部署在网站上,相同的脚本会显示上述错误。

let scriptSource = "window.webkit.messageHandlers.jsHandler.postMessage({command: 'command goes here'});"
let userScript = WKUserScript(source: scriptSource, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
userContentController.addUserScript(userScript)

在web端,我使用了以下代码

key: "onExit",
                    value: function() {
                        var t = function() {
                            try {
                                return window.webkit.messageHandlers.jsHandler.postMessage || null
                            } catch (t) {
                                return null
                            }
                        }();
                        if (t)
                            try {
                                t({
                                    command: "command goes here"
                                }), console.log("window.webkit.messageHandlers.jsHandler.postMessage called successfully")
                            } catch (t) {
                                console.log("error thrown when calling window.webkit.messageHandlers.jsHandler.postMessage - " + (t || {}).message)
                            }
                        else
                            console.log("window.webkit.messageHandlers.jsHandler.postMessage not found!")
                    }

【问题讨论】:

  • 你发现了什么?

标签: javascript swift webview wkwebview


【解决方案1】:

显式绑定this 将解决错误:

window.webkit.messageHandlers.jsHandler.postMessage.bind(window.webkit.messageHandlers.jsHandler)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多