雷峰
雷峰
  • 发布:2021-03-18 17:31
  • 更新:2025-02-20 18:07
  • 阅读:33436

webview使用uniapp项目开发无法使用uni.postMessage(踩坑经验分享)

分类:uni-app

1、使用uniapp项目写H5 webview,使用hello uniapp的模板,按照webview文档里的源码往template.h5.html里面写入相关内容。
2、引入的https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js脚本,它这个地方是个坑。你要手动改源码。uni.webview.js文件里面注册的就是uni对象。被uniapp项目自带的uni对象覆盖了,我就是把源码里面注册uni对象换了个名字(webUni)就好了。
END:这里把我自己改好的js文件贴上来,包括template.h5.html文件,可以直接使用webUni.postMessage方法。

32 关注 分享
老船长9999 zwzz 千羽羊驼 1***@163.com myforr 1***@139.com Huareu 1***@qq.com 4***@qq.com 言会咸 ai自由畅想 1***@qq.com [已删除] DLO seabert 9***@qq.com 8***@qq.com 8***@qq.com wetyou DCloud_UNI_OttoJi 2***@qq.com Adlaw 套马杆的套子 3***@qq.cm 1***@qq.com 2***@qq.com 1***@qq.com 9***@qq.com 1***@qq.com 1***@qq.com 大力的罗大力 8***@qq.com

要回复文章请先登录注册

8***@qq.com

8***@qq.com

<script type="text/javascript">
// 待触发 `UniAppJSBridgeReady` 事件后,即可调用 uni 的 API。
document.addEventListener('UniAppJSBridgeReady', function() {
console.log('UniAppJSBridgeReady');
webUni.postMessage({
data: {
action: 'message'
}
});
webUni.getEnv(function(res) {
console.log('当前环境:' + JSON.stringify(res));
});
});
</script>

<web-view src="http://localhost:8081/" @message="msg"></web-view>

msg(e) {
console.log(e);
}
拿不到传过来的参数
2021-10-29 16:25
8***@qq.com

8***@qq.com

webUni.postMessage传值无效,接收不到。。。。
2021-10-29 16:16
雷峰

雷峰 (作者)

回复 Huareu :
不会呀 你应该是配置有问题,API还是有效果的。现在官方最新版可以直接用uni.webView.xxx来操作,不需要改源码了
2021-10-13 11:34
Huareu

Huareu

用了这个方法后,在小程序webview中好像还是没有效果,页面还是无法跳转呢,不知道楼主遇到没有
2021-08-07 11:05
x***@foxmail.com

x***@foxmail.com

回复 x***@foxmail.com :
解决了
document.addEventListener('click', function(e) {
console.log(e)
if(e.target.dataset.action === 'navigateTo'){
webUni.navigateBack({
delta: 1
});
}
});
2021-08-04 11:07
x***@foxmail.com

x***@foxmail.com

回复 x***@foxmail.com :
用query或者getClassname 之类的都不行,getclassName可以获取元素数组,但是getClassName[0] 就又是null或者undefined的了
2021-08-04 10:51
x***@foxmail.com

x***@foxmail.com

请问下,我可以获取document.addEvent监听,但是不能获取某个dom元素的监听有什么方法么
let x = document.getElementById('btnaac')
console.log(x,'123')
这个时候x打印结果为null、
直接写document.addevent(
uni.navback => 1
)
是可以触发返回的
2021-08-04 10:50
雷峰

雷峰 (作者)

回复 7***@qq.com :
你的问题我看的不清楚,你是怎么进行通信的?你说的这个错误是你使用WebSocket报错的。webUni这个对象只能使用uni的部分API,不是和项目里的uni对象一样的。
2021-06-22 16:53
7***@qq.com

7***@qq.com

WebSocket connection to 'ws://localhost:9542/sockjs-node/886/ervhfnai/websocket' failed: WebSocket is closed before the connection is established.
2021-06-15 16:25
7***@qq.com

7***@qq.com

下载了引入了 改成webUni了 还是无法通信 老哥知道怎么回事吗
2021-06-15 15:37