你好,我在iOS里面用原生的WKWebview加载h5页面,同时再原生的里面做了扩展,但uni-app里面使用window.webkitPostMessage('success')或者window.postMessage('success'),正常的网页使用window.webkit.messageHandlers.success.postMessage('success')在iOS端就可以接收到,请问这种原生的如何解决,因为我们的这个H5页面也要提供给别人的原生的wkwebview使用
![d***@xzsz.ltd](https://img-cdn-tc.dcloud.net.cn/account/identicon/cc48645c24766eb6e9db771093976382.png)
- 发布:2021-01-15 20:05
- 更新:2021-01-19 15:19
- 阅读:1251
uni-app发行的H5在iOS wkwebview 打开, H5如和发送消息给iOS原生
![BobDaD](https://img-cdn-tc.dcloud.net.cn/account/identicon/76917aa698dd61f8d86af3e3ed3460c7.png)
方法命名要规范!方法命名要规范!方法命名要规范!重要的事情说三遍!方法命名success ???
兄弟,我猜应该是你iOS的WKWebview的configuration的问题。你看看你addScriptMessageHandler时候添加进去没。
首先在WKWebView里addScriptMessageHandler,注册对js的xx的方法监听
self.wkwView.configuration.userContentController.add(self, name: "load")
然后代理方法进行监听,name一定要一致!
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if (message.name == "goBack") {
self.dismiss(animated: true, completion: nil)
}
}
至于js里的方法名,和name也要一致。
-
d***@xzsz.ltd (作者)
我的iOS里面的名字是一致的就是这么写的,最后我改成window.webkit.messageHandlers['xxxname'].postMessage('')就可以了
2021-01-22 16:03
d***@xzsz.ltd (作者)
window.webkit.messageHandlers['xxxname'].postMessage('') 这样就解决了,我也很纳闷,对象.不出来,用[]就可以取,可能是js对象的问题
2021-01-22 16:04