老司机开个车
老司机开个车
  • 发布:2019-05-09 10:38
  • 更新:2023-03-18 14:15
  • 阅读:14011

关于uniapp中使用web-view的经验

分类:uni-app

首先说一下环境,用的是HBX1.9.4,连接的网页是vue工程下的一个界面,存在路由的判断,我做的一些跳转都是在路由里面设置的
一开始,出现了一个很奇怪的问题,不知道是不是在vue中异步请求的问题,后来证明不是

document.addEventListener('UniAppJSBridgeReady', function () {  
      uni.reLaunch({  
           url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
       });  
});

在上一段代码中,我只要单独放一个输出语句,完全可以,但是只要加了跳转的语句,就不会触发
后来试了很多次,利用延时语句,发现是不定时的触发,偶尔性
后来网上查找资料参考了支付宝小程序的使用文档,模仿使用window.UniAppJSBridge,完美解决问题,之前看到有人说使用uni.postMessage的时候,uniapp并不能及时收到网页传回来的消息,这个我没有验证,感兴趣的可以试一试,我的代码如下:

 setTimeout(() => {  
                    if (window.UniAppJSBridge) {  
                        uni.reLaunch({  
                            url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                        });  
                    } else {  
                        document.addEventListener('UniAppJSBridgeReady', function () {  
                            uni.reLaunch({  
                                url: '../../pages/menu/menu?list='+JSON.stringify(appMenuList)  
                            });  
                        });  
                    }  
                }, 100);

大家有问题,可以评论

2 关注 分享
2***@qq.com ahWell

要回复文章请先登录注册

喜欢技术的前端

喜欢技术的前端

请问html页面怎么跟vue页面实时通信,而不是在返回的时候才接受数据呢??好难啊
2019-06-13 14:51
SimpleJalon

SimpleJalon

回复 老司机开个车 :
直接在main.js 引入就好了 就不用你上面那个操作了,麻烦点的就是 假设uni-webview.js 更新了 那就得重新编译下 其它 还好
2019-06-06 17:47
老司机开个车

老司机开个车 (作者)

回复 SimpleJalon :
我是在index.html中引入的
2019-06-06 17:27
SimpleJalon

SimpleJalon

你在vue下的 uni 的 webview.js 是怎么引入的? 我在 main.js 里面注册的不会 import uniWebview from './uni.webview.1.5.1.js'; 可以直接用 不过 webview.js 要稍微改动下 postMessage 的坑还在研究。。。
2019-06-06 14:37