// 发送数据到网页
const sendDataToWeb = (data) => {
// 获取所有页面路由
const pages = getCurrentPages();
// 找到最后一个索引
const index = pages.length - 1;
// 获取到当前页面的webView实例
const currentWebview = pages[index].$getAppWebview();
// 取到真正的webview
const webView = currentWebview.children()[0];
webView.evalJS(`RequireMapMobile('${JSON.stringify(data)}')`);
}
const context = getCurrentInstance(); // 允许访问对高级使用或库创建者有用的内部组件实例
// 接收浏览器发送的消息
const messageHanle = (e) => {
console.log("浏览器发送的消息", e.detail.data[0]);
};

- 发布:2025-04-03 12:55
- 更新:2025-04-03 16:52
- 阅读:194
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11 家庭中文版 23H2
HBuilderX类型: 正式
HBuilderX版本号: 4.57
手机系统: HarmonyOS NEXT
手机系统版本号: HarmonyOS NEXT Developer Preview
手机厂商: 华为
手机机型: nova 13
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
App下载地址或H5⽹址: https://static-mp-ff40e3ac-9cb8-4dc9-add1-486c5e802f30.next.bspapp.com/ywx/webview.html
示例代码:
操作步骤:
同样的代码,就在鸿蒙next下无法发送消息到浏览器,可以接收消息。安卓和iOS正常
同样的代码,就在鸿蒙next下无法发送消息到浏览器,可以接收消息。安卓和iOS正常
预期结果:
ios、android和harmonyos next通过webview与浏览器通信
ios、android和harmonyos next通过webview与浏览器通信
实际结果:
鸿蒙next不能发送消息到浏览器,但是可以接收消息。
鸿蒙next不能发送消息到浏览器,但是可以接收消息。
bug描述:
**** 在harmonyos next下发送数据没效果,可以接收消息。android和iOS是可以的。目前是在harmonyos next 5.0.0下运行的
5 个回复
最佳回复
Adlaw
你直接参考我这样写吧,如果不行的话那可能就是H5端有点问题,或者uniapp又有什么特殊bug了,不兼容你这个机型。补充一下,你要等H5页面完全加载完之后才能调用获取方法,你一进来就调用的话(比如onload)是获取不到的。
Adlaw
鸿蒙要用这个方法 uni.createWebviewContext('webModule', this).evalJS(function)
Adlaw
uni.createWebviewContext第一个参数是web-view这个组件绑定的id
2025-04-03 15:30
忆往昔 (作者)
回复 Adlaw: 那个是使用vue2的语法了,this。这个方法其实我也试过,也不行。请问你成功了吗,纯血鸿蒙(harmonyos next)
2025-04-03 15:47
Adlaw
回复 忆往昔: 我是vue3,这个方法一定行,我都做了好多鸿蒙项目了
2025-04-03 15:52
忆往昔 (作者)
回复 Adlaw: uni.createWebviewContext('webview', this).evalJS(
RequireMapMobile(${JSON.stringify(mapConfig)})
)打印console.log(uni.createWebviewContext('webview', this)); 结果是{
"evalJS": function evalJS() {},
"evalJs": function evalJs() {},
"back": function back() {},
"forward": function forward() {},
"reload": function reload() {},
"stop": function stop() {}
} 获取到的都感觉不对,你之前的项目可能不是harmonyos next的纯血鸿蒙
2025-04-03 16:02
莱克斯瑞
回复 Adlaw: 您好,我在renderjs中使用navigator.mediaDevices.getUserMedia()在鸿蒙端无法获取到到本地视频流而且报错:Permission denied。权限都是提前给了的,而且安卓端是没问题的。请问这个咋解决?
2025-05-16 11:16
Adlaw
你要不信这个方法行就算了,你再找找别的方法吧
忆往昔 (作者)
大佬,我不是不信,运行起来没效果。evalJS这个函数都是空的,可以帮我分析一下么。还是说浏览器那边的代码要对应修改
2025-04-03 16:09
忆往昔 (作者)
下面是我写的代码,感觉没啥区别。就是传不过去,很难受
Adlaw
你H5是怎么写的?
2025-04-03 16:49
忆往昔 (作者)
回复 Adlaw: 可以了,谢谢。非常感谢
2025-04-03 16:50
忆往昔 (作者)
回复 Adlaw: 其实我之前就穿进去了,但是我是用console.log打印来判断有没有接收到
2025-04-03 16:51
忆往昔 (作者)
回复 Adlaw: uniapp运行在鸿蒙上是没打印34行的。在uniapp的控制台看不到
2025-04-03 16:53
Adlaw
回复 忆往昔: 好的
2025-04-03 17:00
忆往昔 (作者)
回复 Adlaw: 大佬,可以再向你请教一个问题吗,就是我从一个页面跳转到含webview的页面,中间会有两秒左右的白屏
2025-04-03 18:08
Adlaw
回复 忆往昔: 这个很正常,uniapp性能很差,如果有些页面比较大那就会有白屏等待时间
2025-04-03 18:21
忆往昔 (作者)
这是html的