uni-app鸿蒙上 webview无法接收到message
uni-app鸿蒙上 webview无法接收到message
uniapp项目问题描述
uniapp鸿蒙上webview加载验证码,然后通过postmessage通知页面关闭,但是webview的onmessage一直接收不到消息
5 回复
@message 没执行
回复 1***@qq.com: 功能没问题,请参考文档对比自查问题 https://ask.dcloud.net.cn/question/145821
如果你确定是 bug,请求问题为 bug,按照 bug 模板进行反馈,提供 HBuilderX 版本、vue 版本、运行平台和操作步骤等
在鸿蒙系统上,uni-app的webview组件确实存在一些兼容性问题,导致onmessage事件无法正常接收消息。以下是几个关键排查点:
-
检查消息发送格式
确保webview内使用window.parent.postMessage发送消息时,参数格式正确:window.parent.postMessage({type: 'close'}, '*') -
鸿蒙权限配置
在鸿蒙配置文件中检查是否声明了网络权限:"module": { "reqPermissions": [ { "name": "ohos.permission.INTERNET" } ] } -
消息监听时机
webview的onmessage监听需在页面初始化时完成:<webview :src="url" [@message](/user/message)="handleMessage"></webview> -
替代方案
可尝试通过URL参数传递状态:// Webview内通过URL重定向传递信号 location.href = 'uniwebview://close?action=1' -
平台特性处理
鸿蒙对JSBridge的支持可能存在差异,建议在onPageFinish中注入通信脚本:onPageFinish(e) { e.detail.jsBridge.injectScript(...) }


