小程序是这个: <WebView
src={`https://mtest.cogleap.cn/m/quesionnaire?t=${Taro.getStorageSync(
"CognitiveleapUser"
)}&to=${to}&culture=${culture}`}
onLoad={handleOnLoad}
onMessage={handleMessage}
/>
web:
wx.miniProgram.getEnv(function(res) {
if (res.miniprogram) {
Toast.loading(intl.formatMessage({ id: 'submitData' }), 1)
alert(wx.miniProgram.postMessage({data: JSON.stringify(putData)}))
wx.miniProgram.postMessage({data: JSON.stringify(putData)});
wx.miniProgram.navigateBack({delta: 1})
}
} )
为啥handleMessage
不打印 但是打印invokeAppService postMessage {"answerContent":"xxxx}

使用 wx.miniProgram.postMessage 之前必须先调用一下wx.miniProgram.navigateBack(),并且 必须是先调用wx.miniProgram.navigateBack() 在发送消息,否则不生效。wx.miniProgram.postMessage(),是在特定时机(后退、销毁、分享)时候触发 wx.miniProgram.navigateBack() wx.miniProgram.postMessage({ data: { openid: '1111111111' } });不行呐,哥们
家人们 我解决了 我的经验基于Taro 首先要绑定 <WebView
src={xxx}`}
onLoad={handleOnLoad}
onMessage={handleMessage}
/>
const handleMessage = (e) => {
console.log(e, "55555");
const receivedData = e.detail.data;
console.log("Received data from WebView:", receivedData);
};
然后去你的web端或者h5的项目 npm装一个weixin-js-sdk 然后import wx from "weixin-js-sdk"; 再去wx.miniProgram.getEnv(function(res) {
if (res.miniprogram) {
wx.miniProgram.postMessage({data: JSON.stringify(xxx)});
wx.miniProgram.navigateBack({delta: 1})
}
} ) 包成功