【发布时间】: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