Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript与WkWebView一起使用-UserMessageHandler上出现错误_Javascript_Swift_Webview_Wkwebview - Fatal编程技术网

将JavaScript与WkWebView一起使用-UserMessageHandler上出现错误

将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

当通过Javascript向iOS发送消息时,我遇到了这样一条错误消息:我无法在线找到任何信息:“只能在UserMessageHandler实例上调用UserMessageHandler.postMessage”

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

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

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)

你发现了什么?你发现了什么?