2022-03-29更新
由于postMessage方法使用限制条件过多(小程序后退、组件销毁、分享才触发),考虑其他方案:
1.如果是普通跳转,即navigateTo等,则直接跳转时url?a=1进行传参,目标页面onLoad接收即可;
2.如果必须跳转 tabBar 页面,即使用switchTab方法,则 新建一个小程序中间页面a,先navigateTo携带参数跳到a,再从a用switchTab跳至目标页面,因为a已经是小程序页面则在a页面可以用EventChannel的emit, on等进行传参;
备注:reLaunch也可以跳转 tabBar 页面,但是会销毁其他页面,如果原页面 不能销毁重新加载,则不能使用,反之,可以替换 2 使用
-----------------------------------
原因:需要跳转到 小程序页面才能触发 ,停留在H5页面无法触发
微信官方api说明:https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
wx.miniProgram.postMessage | 向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件 |
正确代码:
h5
1 wx.miniProgram.postMessage({ data: { 2 queryPam: 'eeeee' 3 }}) 4 wx.miniProgram.switchTab({ url: '/pages/queryEngineer/index' })
小程序页面
<web-view v-if="showFlag" :src="webViewUrl" @message="message"></web-view> message({ detail: { data } }) { console.log('====统计小程序webview绑定的message方法====') const fileData = data[0]; console.log('$$$$$$$$$$$$$$$$$$$$$$$$$=111=message==fileData====',fileData) uni.$emit("tongjiTo", fileData); },