postBridgeMessage
向目标环境发送 Bridge 消息,支持 H5 → 小程序、H5 → App 等方向
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.isServer | () => boolean | 检查是否存在 window 对象 |
deps.getWindow | () => Window | UniWindow | null | 获取 window 对象 |
deps.getWx | () => WxJsSdk | null | 获取微信 JS-SDK 对象 |
deps.setTimeout | typeof setTimeout | 延迟函数 |
环境要求
- 浏览器环境: 需要 window 对象
- 微信小程序: 需要 wx.miniProgram 对象(H5 → 小程序方向)
- App WebView: 需要 uni 或 plus 对象(H5 → App 方向)
函数签名
typescript
function postBridgeMessage(
message: RequestMessage,
direction: 'h5-to-miniapp' | 'h5-to-app',
deps: PostBridgeMessageDeps,
options?: PostBridgeMessageOptions
): Promise<void>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
message | RequestMessage | 是 | 消息对象(标准格式) |
direction | 'h5-to-miniapp' | 'h5-to-app' | 是 | 通信方向 |
deps | PostBridgeMessageDeps | 是 | 发送消息依赖 |
options.useTransferPage | boolean | 否 | 是否使用中转页面(小程序,推荐) |
options.autoNavigateBack | boolean | 否 | 是否自动返回(小程序) |
options.navigateBackDelay | number | 否 | 返回延迟时间(毫秒,默认 300) |
返回值
| 类型 | 说明 |
|---|---|
Promise<void> | 发送成功时 resolve |
工作原理
H5 → 小程序
使用中转页面(推荐):
- 将消息编码到 URL 参数中
- 跳转到中转页面
- 小程序通过 webview 加载中转页面获取消息
传统方式:
- 使用
wx.miniProgram.postMessage发送消息 - 可选自动返回(延迟后调用
navigateBack)
- 使用
H5 → App
- 优先使用
uni.postMessage - 其次使用
uni.webView.postMessage - 最后使用
plus.webview的evalJS方法
注意事项
- 服务端环境不支持发送消息
- 需要先使用
createRequestMessage创建标准消息对象 - 小程序环境推荐使用中转页面方式,兼容性更好