35自学编程
35自学编程
  • 发布:2022-12-31 17:01
  • 更新:2023-01-01 18:55
  • 阅读:1213

uniapp app端的webview 触发uniapp编译H5 通讯问题 this.$refs.webview.evalJs

分类:uni-app

app端是nvue/vue3

<web-view :src="webviewdata" ref="webview" style="width:750+'rpx';height:1000+'rpx'"@onPostMessage="handlePostMessage" ></web-view>  

app端触发webview下H5的这里面这个方法pushMessage()进行通讯

this.$refs.webview.evalJs(`pushMessage()`);  

H5端是uniapp vue2编译的H5的
uniapp H5端 pushMessage()这个方法放在哪里,

window.pushMessage()
function pushMessage()

我放在app.vue /页面<script></script> /methods:{} /main.js 这个地方都收不到app端发过来得消息

我百度搜索 到这个方法

this.$refs.webview.evalJs("document.body.style.background ='#00FF00'");

这个方法是能改变webview下H5的背景颜色的,证明this.$refs.webview.evalJs()这个方法是可以走通的,
但是就是触发不了uniapp编译H5下面的pushMessage()方法,我没学过H5 百度搜索出来的方法都是放在原生H5里面,在uniapp 编译H5 我不知道放在哪里,大哥大姐 给我说一下放在哪里

2022-12-31 17:01 负责人:无 分享
已邀请:
DCloud_UNI_WZF

DCloud_UNI_WZF

evalJs 的作用域是全局作用域,所以你可以把 pushMessage() 放到全局,也就是window下

35自学编程

35自学编程 (作者) - 能成否

问题已解决
这个方法在拼接字符串的时候pushMessage()里面要加‘’单引号或双引号

this.$refs.webview.evalJs(``);  

之前写法(错误写法)

pustMessage(event){  
this.$refs.webview.evalJs(`pushMessage(${event})`);    
}

正确写法

pustMessage(event){  
this.$refs.webview.evalJs(`pushMessage('${event}')`);    
}

uniapp h5 当前页这样放就能接收到app传递给h5的data


<script>  
window.pushMessage= function(data){  
console.log(data,'data')  
}  
export default {}  
</script>

要回复问题请先登录注册