【无标题】cocos与外部laya或者web交互

一.电脑:

电脑网页:cocos --->laya

this.webview._impl._iframe.contentWindow.postMessage("cocosToLaya", "*");//laya

//这里是浏览器环境下, 接收web传过来的消息//cocos

window.addEventListener("message", function(event){

console.log( '这里是接收到的消息,消息内容在event.data属性中1111', event )

console.log(event.data);

}, false)

电脑网页:laya --->cocos

if (window.isNative) {//laya

//android or ios

document.location = 'testkey://a=1&b=2'

} else {

//browser 浏览器下,向cocos发送消息

parent.postMessage("------------hello!-----cocos---------", "*")

}

if (cc.sys.isBrowser) {//cocos

//这里是浏览器环境下, 接收web传过来的消息

window.addEventListener('message', function (e) {

console.log("----cocos---", e.data);

test();

})

}

二.手机

手机安卓:cocos --->laya

this.webview.evaluateJS('window.test()');//cocos

let data = {id:123456}

data = JSON.stringify(data); //注意这里需要把参数序列化

this.webView.evaluateJS("setBackgroundColor(" + data + ")");

function test() { //laya

console.log("-------laya--------data-------" + data)

}

window.test = test;

手机安卓:laya --->cocos

if (window.isNative) { //laya

//android or ios

document.location = 'testkey://a=1&b=2'

} else {

//browser 浏览器下,向cocos发送消息

parent.postMessage("------------hello!-----cocos---------", "*")

}

window.addEventListener("message", function(event){ //laya,注意:这个会收到上面的 parent.postMessage("------------hello!-----cocos---------", "*")消息

console.log( '这里是接收到的消息,消息内容在event.data属性中1111', event )

console.log(event.data);

}, false)

//laya

document.location = 'testkey://a=1&b=2';

传递参数

var id=111;

var name="ganme"

document.location = 'testkey://webview?id='+id+'&name='+name;

//cocos

onLoad() {

// 这里是与内部页面约定的关键字,请不要使用大写字符,会导致 location 无法正确识别。

let scheme = "testkey";

function jsCallback (target, url) {

// 这里的返回值是内部页面的 URL 数值,需要自行解析自己需要的数据。

let str = url.replace(scheme + '://', ''); // str === 'a=1&b=2'

console.log("------1testkeytestkey-1----target:"+JSON.stringify(target));//{"__nativeRefs":{},"src":"http://tan-xin-game.mytingyou.com/client/Disucz/test/bin/index.html?sdk=3\&ip=47.92.24.73:12347\&debug=true"}

console.log("------1testkeytestkey-2----str:"+str);//a=1&b=2

console.log("------1testkeytestkey-3----url:"+url);//testkey://a=1&b=2

}

this.webview.setJavascriptInterfaceScheme(scheme);

this.webview.setOnJSCallback(jsCallback);

commonUtils.initALLRES();

},

相关推荐
烛阴1 小时前
前端必会:如何创建一个可随时取消的定时器
前端·javascript·typescript
萌萌哒草头将军2 小时前
Oxc 最新 Transformer Alpha 功能速览! 🚀🚀🚀
前端·javascript·vue.js
1024小神3 小时前
nextjs项目build导出静态文件
前端·javascript
parade岁月3 小时前
JavaScript 日期的奇妙冒险:当 UTC 遇上 el-date-picker
javascript
是一碗螺丝粉3 小时前
拯救你的app/小程序审核!一套完美避开审核封禁的URL黑名单机制
前端·javascript·微信小程序
Juchecar3 小时前
采用 Vue 3 实现单页应用(SPA)与本地数据存储方案
前端·javascript·vue.js
雲墨款哥5 小时前
JS算法练习-Day10-判断单调数列
前端·javascript·算法
JuneXcy5 小时前
11.web api 2
前端·javascript·html
zYear5 小时前
Elpis 全栈应用框架-- 总结
前端·javascript
Juchecar6 小时前
分析:将现代开源浏览器的JavaScript引擎更换为Python的可行性与操作
前端·javascript·python