收藏
回答

WebView 组件,H5调用wx.miniProgram.postMessage,立即响应?

WebView 组件,H5调用wx.miniProgram.postMessage,立即响应还是要等到哪个事件出现后响应?

回答关注问题邀请回答
收藏

4 个回答

  • Mr.Zhao
    Mr.Zhao
    2025-05-28

    2025-05-28
    有用 1
    回复 7
    • breeze
      breeze
      2025-07-27
      你觉得你们这个api有意义吗?
      我发送一个信息,还得等着用户愿意了点个什么按钮才能起作用?
      话说有人成功使用过这个api吗?
      2025-07-27
      回复
    • Mr.Zhao
      Mr.Zhao
      发表于移动端
      2025-07-27回复breeze
      爱用不用
      2025-07-27
      1
      回复
    • breeze
      breeze
      2025-07-27回复Mr.Zhao
      腾讯的人果然牛
      2025-07-27
      回复
    • breeze
      breeze
      2025-07-27回复Mr.Zhao
      正经问题几年也不解决,正经问题几个月也没人回复。用户提个意见,秒回。这样的公司不兴盛都难。
      2025-07-27
      回复
    • Mr.Zhao
      Mr.Zhao
      2025-07-27回复breeze
      你从哪看出我是腾讯的人了?你真牛
      2025-07-27
      回复
    查看更多(2)
  • momo
    momo
    2025-06-04

    小程序只会在特定时机才收到H5页面传过来的消息。这些特定的触发时机包括:

    1. 页面后退(wx.navigateBack): 当用户点击小程序的返回按钮,或者小程序调用 wx.navigateBack API 返回上一页时,bindmessage 事件会被触发,小程序会收到 H5 页面在当前 web-view 实例生命周期内所有 postMessage 发送的数据。
    2. 组件销毁: 当 web-view 组件所在的页面被销毁时(例如,用户从当前页面跳转到另一个页面,或者关闭小程序),bindmessage 事件会被触发。
    3. 分享(wx.onShareAppMessage): 当用户点击右上角的分享按钮,并通过 wx.onShareAppMessage 分享小程序时,bindmessage 事件会被触发。


    页面后退,组件销毁(跳转到另外页面)可以直接在H5页面中调用下面这些API来完成:

    • wx.miniProgram.navigateTo
    • wx.miniProgram.navigateBack
    • wx.miniProgram.switchTab
    • wx.miniProgram.reLaunch
    • wx.miniProgram.redirectTo


    所以,在H5页面中做完 wx.miniProgram.postMessage 操作后,你还需要执行一下上面的这些API。不然小程序的回调函数不会被触发。

    需要注意的是,如果你的小程序第一个页面就嵌入了web-view,那么H5中没办法使用wx.miniProgram.navigateBack返回,因为这已经是第一个页面了。


    微信关于 postMessage 机制的文档很垃圾,很多人都没看明白,社区里面关于这个的问题从22年到现在一直有人提就是不完善。

    2025-06-04
    有用 2
    回复
  • wxzsj
    wxzsj
    2025-05-28

    在 小程序侧需在web-view组件上设置bindmessage="handler"事件监听 已经加上

    但发现发现这个消息跟分享的消息合并后才出现,对jssdk的版本有要求吗?

    2025-05-28
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-05-28
    有用
登录 后发表内容