Skip to content

postBridgeMessage

向目标环境发送 Bridge 消息,支持 H5 → 小程序、H5 → App 等方向

前置依赖

依赖参数

参数名类型说明
deps.isServer() => boolean检查是否存在 window 对象
deps.getWindow() => Window | UniWindow | null获取 window 对象
deps.getWx() => WxJsSdk | null获取微信 JS-SDK 对象
deps.setTimeouttypeof 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>

参数

参数名类型必填说明
messageRequestMessage消息对象(标准格式)
direction'h5-to-miniapp' | 'h5-to-app'通信方向
depsPostBridgeMessageDeps发送消息依赖
options.useTransferPageboolean是否使用中转页面(小程序,推荐)
options.autoNavigateBackboolean是否自动返回(小程序)
options.navigateBackDelaynumber返回延迟时间(毫秒,默认 300)

返回值

类型说明
Promise<void>发送成功时 resolve

工作原理

H5 → 小程序

  1. 使用中转页面(推荐)

    • 将消息编码到 URL 参数中
    • 跳转到中转页面
    • 小程序通过 webview 加载中转页面获取消息
  2. 传统方式

    • 使用 wx.miniProgram.postMessage 发送消息
    • 可选自动返回(延迟后调用 navigateBack

H5 → App

  1. 优先使用 uni.postMessage
  2. 其次使用 uni.webView.postMessage
  3. 最后使用 plus.webviewevalJS 方法

注意事项

  • 服务端环境不支持发送消息
  • 需要先使用 createRequestMessage 创建标准消息对象
  • 小程序环境推荐使用中转页面方式,兼容性更好