将JavaScript与WkWebView一起使用-UserMessageHandler上出现错误
当通过Javascript向iOS发送消息时,我遇到了这样一条错误消息:我无法在线找到任何信息:“只能在UserMessageHandler实例上调用UserMessageHandler.postMessage” 我正在使用webview在iOS上呈现网页 我尝试从本机代码中添加相同的脚本,并且能够收到消息。但是,如果我将其部署到web站点上,相同的脚本会显示上述错误将JavaScript与WkWebView一起使用-UserMessageHandler上出现错误,javascript,swift,webview,wkwebview,Javascript,Swift,Webview,Wkwebview,当通过Javascript向iOS发送消息时,我遇到了这样一条错误消息:我无法在线找到任何信息:“只能在UserMessageHandler实例上调用UserMessageHandler.postMessage” 我正在使用webview在iOS上呈现网页 我尝试从本机代码中添加相同的脚本,并且能够收到消息。但是,如果我将其部署到web站点上,相同的脚本会显示上述错误 let scriptSource = "window.webkit.messageHandlers.jsHandler.post
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!")
}
显式绑定
此
将解决错误:
window.webkit.messageHandlers.jsHandler.postMessage.bind(window.webkit.messageHandlers.jsHandler)
显式绑定此
将解决错误:
window.webkit.messageHandlers.jsHandler.postMessage.bind(window.webkit.messageHandlers.jsHandler)
你发现了什么?你发现了什么?