h5端可通过jssdk postMessage来操作小程序
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> // javascript wx.miniProgram.navigateTo({url: '/path/to/page'}) wx.miniProgram.postMessage({ data: 'foo' }) wx.miniProgram.postMessage({ data: {foo: 'bar'} }) wx.miniProgram.getEnv(function(res) { console.log(res.miniprogram) })小程序
<web-view src="{{url}}" bindmessage="onLoadMessage" bindload="onWebLoad" binderror="onWebError"></web-view>
注意:wx.miniProgram.postMessage 向小程序发送消息,会在以下特定时机触发组件的message事件:小程序后退、组件销毁、分享、复制链接,也就是webview的bindmessage事件不会立即执行,需要等到小程序后退、组件销毁、分享、复制链接的时候才会执行回调,真是个鸡肋啊。
解决办法就是:h5端传值完了后,wx.miniProgram.postMessage({ data: {foo: 'bar'} }),立即执行wx.miniProgram.navigateTo({url: '/path/to/page'})到空白页,空白页再跳转回来,这个时候就能触发webview的bindmessage事件获取消息了,主要回退的时候webview会重新加载h5页面,注意做好缓存处理
还有一种办法就是:诱导用户点击分享按钮触发。
小程序传值给h5
需要传给小程序的值当做参数放在当前url上,小程序中通过点击转发即可获取。这种方法缺点是只能在点击转发时才可传。
小程序端:
<web-view src="https://example.html?id=123"></web-view>h5端通过url获取参数
<script> let id = getUrlParam('id'); </script>
参考https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
网友回复
如何编写一个chrome插件实现多线程高速下载大文件?
cdn版本的vue在网页中出现typeerror错误无法找到错误代码位置怎么办?
pywebview能否使用webrtc远程控制共享桌面和摄像头?
pywebview6.0如何让窗体接受拖拽文件获取真实的文件路径?
如何在linux系统中同时能安装运行apk的安卓应用?
python有没有离线验证码识别ocr库?
各家的ai图生视频及文生视频的api价格谁最便宜?
openai、gemini、qwen3-vl、Doubao-Seed-1.6在ui截图视觉定位这款哪家更强更准?
如何在linux上创建一个沙箱隔离的目录让python使用?
pywebview如何使用浏览器自带语音识别与webspeech 的api?