需求概述
在微信小程序中,通过 web-view 组件加载内嵌网页时,原生小程序与 H5 页面之间的数据交互是混合开发的核心痛点。主要依赖 postMessage 机制实现双向通信。下面结合实战经验,梳理完整的配置、封装及避坑指南。
通信指南
1. 基础配置
小程序端配置
首先要在后台和代码层面做好域名白名单配置,否则 web-view 无法加载。虽然不同版本配置项略有差异,但核心是确保域名可信。
// app.json 示例:配置允许的 webview 域名
{
"pages": ["pages/index/index"],
"mpwebview": {
"urlList": ["https://your-domain.com"]
}
}
网页端配置
内嵌网页必须引入微信 JS-SDK,这是调用 wx.miniProgram 接口的前提。
<!-- 内嵌网页需引入微信 JS-SDK -->
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<!-- 建议使用官方最新稳定版 -->
2. 通信实现
方案一:小程序向网页发送消息
小程序端通过 selectComponent 获取组件实例后调用 postMessage。这里要注意,消息对象的结构需要符合约定,避免解析错误。
// page.js
Page({
data: { webViewUrl: 'https://your-domain.com/page.html' },
() {
},
() {
webview = .();
(!webview) ;
webview.({
: {
: ,
: ,
: .()
}
});
},
() {
.(, e..);
{ type, data } = e..;
(type === ) {
}
}
});


