uni-app鸿蒙上 webview无法接收到message

uni-app鸿蒙上 webview无法接收到message

uniapp项目问题描述

uniapp鸿蒙上webview加载验证码,然后通过postmessage通知页面关闭,但是webview的onmessage一直接收不到消息

5 回复

其他通信是否正常?@message 是否执行了?如果不确定如何通信,请参考https://uniapp.dcloud.net.cn/component/web-view.html

更多关于uni-app鸿蒙上 webview无法接收到message的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


回复 1***@qq.com: 功能没问题,请参考文档对比自查问题 https://ask.dcloud.net.cn/question/145821

如果你确定是 bug,请求问题为 bug,按照 bug 模板进行反馈,提供 HBuilderX 版本、vue 版本、运行平台和操作步骤等

在鸿蒙系统上,uni-app的webview组件确实存在一些兼容性问题,导致onmessage事件无法正常接收消息。以下是几个关键排查点:

  1. 检查消息发送格式
    确保webview内使用window.parent.postMessage发送消息时,参数格式正确:

    window.parent.postMessage({type: 'close'}, '*')
    
  2. 鸿蒙权限配置
    在鸿蒙配置文件中检查是否声明了网络权限:

    "module": {
      "reqPermissions": [
        { "name": "ohos.permission.INTERNET" }
      ]
    }
    
  3. 消息监听时机
    webview的onmessage监听需在页面初始化时完成:

    <webview :src="url" [@message](/user/message)="handleMessage"></webview>
    
  4. 替代方案
    可尝试通过URL参数传递状态:

    // Webview内通过URL重定向传递信号
    location.href = 'uniwebview://close?action=1'
    
  5. 平台特性处理
    鸿蒙对JSBridge的支持可能存在差异,建议在onPageFinish中注入通信脚本:

    onPageFinish(e) {
      e.detail.jsBridge.injectScript(...)
    }
回到顶部