Cocos JS 使用 Webview 通过 postMessage 进行通信
我是用的是 cocos2.4.12
cocos 向 webview 发送消息
有的人说这个方式是可以的,但是我不行:
typescript
window.top.postMessage(data, origin);
其中data
就是需要传递的数据,origin
是协议+主机+端口号,当为"*"
时表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"
。
通过上面的方式我失败了,我是用下面的方式:
typescript
let iframe = this.node.getChildByName("voideCom").getComponent(cc.WebView)["_impl"]["_iframe"];
iframe.contentWindow.postMessage({name:"叫我+V"}, "*");
webview 接收数据
webview 接收数据就很简单了:
typescript
window.addEventListener("message", function(event){
console.log("收到的数据----> ", event.data);
}, false)
webview 发送数据
typescript
window.parent.postMessage({
name: "叫我+V"
}, '*');
cocos 接收
typescript
// 取消监听
window.removeEventListener('message', this.handleMessage, false);
// 开启监听
window.addEventListener('message', this.handleMessage, false);
// 回调
handleMessage(e) {
console.log("收到的数据----> ", event.data);
}
其实就这么简单。