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.postMessage(uni-app 壳由 sync-www 注入 uni.webview.*.js)

函数签名 ​

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 ​

调用 uni.postMessage({ data })。

注意事项 ​

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