必须完成业务域名校验、动态加载jssdk、通过url传参并编码,否则白屏或通信失效;个人小程序不支持web-view,企业资质为硬性前提。

小程序里用 <web-view></web-view> 嵌 H5 页面,不是把 URL 往 src 里一塞就能跑通的。业务域名没配对、JSSDK 没加载好、参数传错位置,全都会白屏或通信失效。
业务域名配置必须走完校验文件流程
微信不会认你填了个 HTTPS 域名就放行——它要确认你真能控制这个域名的根目录。
- 在微信公众平台「开发管理 → 开发设置 → 业务域名」添加你的 H5 域名(如
https://h5.example.com),不能带路径、端口或 IP - 点击「下载校验文件」,得到一个形如
MP_verify_xxx.txt的文件 - 把这个文件放到你服务器对应域名的根目录下,确保能通过
https://h5.example.com/MP_verify_xxx.txt直接访问到内容(HTTP 状态码 200) - 保存后,微信后台会自动校验;若失败,检查 Nginx/Apache 是否屏蔽了 .txt 文件、CDN 是否缓存了 404
HTML 页面里 wx.miniProgram 调用失败?先确认 JSSDK 加载时机
wx.miniProgram.navigateTo 或 postMessage 报 undefined,大概率是 wx 对象根本没挂上——静态引入 jweixin-1.6.0.js 在单页应用(Vue/React)里经常不生效。
- 别在
index.html里用<script src="..."></script>全局引入,它可能早于 Vue 实例挂载就执行完了 - 改用动态加载:在组件
mounted或useEffect里创建 script 标签,onload后再调用wx.miniProgram - 加个保险:加载后检查
typeof wx !== 'undefined' && wx.miniProgram是否存在,否则报错提示 - iOS 上偶尔无响应,可在
src后加#wechat_redirect强制刷新上下文
小程序和 H5 传参只能靠 URL query,别信 localStorage 或 postMessage 实时性
wx.miniProgram.postMessage 不是 WebSocket,它只在 web-view 组件销毁(比如用户点返回)时批量触发一次 message 事件。想实时跳转并带参,老老实实用 URL。
- 小程序跳 H5:
<web-view src="https://h5.example.com/page?uid=xxx&token=yyy"></web-view> - H5 跳回小程序:
wx.miniProgram.navigateTo({ url: '/pages/order/detail?id=123' }) - H5 解析参数别手写正则,用
new URL(location.href).searchParams.get('uid')更稳 - 中文参数务必
encodeURIComponent,否则 iOS 可能白屏
本地调试时勾选“不校验合法域名”只是掩耳盗铃
开发者工具里的这个开关只绕过域名白名单校验,但 JSSDK 仍需加载、wx.miniProgram 仍需运行环境。很多问题在线上才暴露。
- 真机调试前,先用 Safari 或 Chrome 访问你的 H5 页面,打开控制台看
https://res.wx.qq.com/open/js/jweixin-1.6.0.js是否 200,有没有 CORS 报错 - 微信内打开 H5 页面时,地址栏是否显示「已登录微信」图标?没有说明没走微信 WebView 容器,
wx对象必然不存在 - 个人类型小程序压根不支持
<web-view></web-view>,连配置入口都没有,企业资质认证是硬门槛
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











