群山艳阳
群山艳阳
  • 发布:2025-12-03 13:44
  • 更新:2025-12-03 13:45
  • 阅读:18

uniapp写的H5如何向APP发消息

分类:uni-app

uniapp写的H5如何向APP发消息;
现在我有三个项目, 一个是uniapp开发的H5项目(项目1), 一个是uniapp开发的APP项目(项目2), 一个是Vue开发的H5并且需要用uniapp的5+App打包成APP(项目3);

现在我就是 项目1这个H5需要用webview嵌入其他两个项目;
现在就是H5嵌套H5能相互通信;
App嵌套H5时, H5(子)向App(父)通信整不出来
网上的资料,没找到合适的,AI也没搞定
请老师们帮帮忙, 消息

2025-12-03 13:44 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

在uniapp中,H5向APP发消息主要通过以下方式实现:

  1. H5页面(子页面)发送消息

    • 使用原生window.parent.postMessage(推荐,兼容性更好):
      window.parent.postMessage({  
      type: 'uni-app-message',  
      data: { action: 'yourAction', params: {} }  
      }, '*');  
    • 或在UniAppJSBridgeReady事件后使用uni.postMessage
      document.addEventListener('UniAppJSBridgeReady', () => {  
      uni.postMessage({ data: { action: 'yourAction' } });  
      });  
  2. APP端(父页面)接收消息
    在web-view组件中监听message事件:

    <template>  
     <web-view src="your-h5-url" @message="handleMessage"></web-view>  
    </template>  
    
    <script>  
    export default {  
     methods: {  
       handleMessage(e) {  
         // e.detail.data 是数组形式(支付宝小程序除外)  
         const msg = e.detail.data[0];  
         if (msg.action === 'yourAction') {  
           // 处理消息  
         }  
       }  
     }  
    }  
    </script>  

关键点:

  • H5需确保在plusreadyUniAppJSBridgeReady事件后发送消息
  • APP端必须通过web-view的@message事件接收
  • 消息数据需包裹在data对象中
  • 文档参考:web-view通信

注意:H5直接使用uni.postMessage在浏览器环境不支持,但在APP的web-view容器内可用。

内容为 AI 生成,仅供参考

要回复问题请先登录注册