需求背景
在微信小程序里用 web-view 组件嵌入 H5 页面时,双向通信是绕不开的需求。核心方案就是通过 postMessage 机制实现原生与网页间的数据交互。下面直接上干货,聊聊具体怎么配、怎么写。
前置准备与配置
小程序端配置
确保在 app.json 或 page.json 中做好基础设置,虽然大部分情况下默认即可,但明确权限是个好习惯:
{
"usingComponents": {},
"permission": {
"scope.webView": {
"desc": "用于网页和小程序通信"
}
}
}
网页端配置
内嵌网页必须引入微信 JS-SDK,这是通信的基础设施。建议使用官方最新版本:
<!-- 内嵌网页需引入微信 JS-SDK -->
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
通信实现逻辑
小程序向网页发消息
在小程序侧,拿到 web-view 组件的引用后,就可以调用 postMessage 方法。这里要注意,消息体通常包含 type 和 payload,方便网页端区分处理。
// page.js
Page({
data: { webViewUrl: 'https://your-domain.com/page.html' },
onLoad() {
// 初始化逻辑
},
// 向网页发送消息
sendToWebPage() {
const webview = this.selectComponent();
webview.({
: {
: ,
: ,
: .()
}
});
},
() {
.(, e..);
{ type, data } = e..;
(type === ) {
}
}
});


