【无标题】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();

},

相关推荐
进击的尘埃25 分钟前
Vue3 响应式原理:从 Proxy 到依赖收集,手撸一个迷你 reactivity
javascript
willow36 分钟前
JavaScript数据类型整理1
javascript
LeeYaMaster42 分钟前
20个例子掌握RxJS——第十一章实现 WebSocket 消息节流
javascript·angular.js
UIUV1 小时前
RAG技术学习笔记(含实操解析)
javascript·langchain·llm
颜酱3 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
FansUnion3 小时前
我如何用 Next.js + Supabase + Cloudflare R2 搭建壁纸销售平台——月成本接近 $0
javascript
左夕5 小时前
分不清apply,bind,call?看这篇文章就够了
前端·javascript
滕青山5 小时前
文本行过滤/筛选 在线工具核心JS实现
前端·javascript·vue.js
时光不负努力5 小时前
编程常用模式集合
前端·javascript·typescript
大雨还洅下6 小时前
前端JS: 跨域解决
javascript