关于uni-app中使用webview和H5通讯及传参问题

前言

最近在用uni-app开发app时,因为uni-app组件map的regionchange取不到经纬度的问题,只能改用H5自行开发map页面(本人采用的是高德地图);H5可用本地Html和网络资源,随你心意,话不多说,直接贴代码~

一、 uni-app引入webview

<web-view :src="linkUrl" @message="getMessage"></web-view>

二、webview嵌入H5页面

需要先引入uni 的 SDK

<!-- uni 的 SDK,必须引用。 -->  
<script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.0.1.52.js"></script>

H5页面使用uni 的SDK:

  1. 先引入uni 的SDK,一定要引用!!
  2. 需要使用uni的api的地方要放到 document.addEventListener(‘UniAppJSBridgeReady’, function() { })这方法里面;
  3. 具体可参考这篇文章 戳这里

三、H5页面返回uni-app

document.addEventListener('UniAppJSBridgeReady', function() {
     document.getElementById("cotrol-btn").addEventListener('click',function(){
			//返回上级页面
			uni.navigateBack();
			//跳转到指定页面 
			uni.redirectTo({  
				url: `/pages/login/login`  
			}); 
			//返回上级页面并传递参数 local,根据个人业务
			uni.navigateBack();
			uni.postMessage({
				data: {
					local: _location
				}
			})
		})
	})

H5 在不同的环境有不同的操作,需个人自行判断

	uni.getEnv(function(res) {  
        if (res.plus) {  
            console.log('当前环境为【5+App】');  
        } else if (res.miniprogram) {  
            console.log('当前环境为【微信小程序】');  
        }  
    });  

四、在需要的页面接收参数

	//重点: 监听子页面uni.postMessage返回的值  
	plus.globalEvent.addEventListener('plusMessage', function(msg){  
		 if(msg.data.args.data.name == 'postMessage'){  
			let rlocal = JSON.stringify(msg.data.args.data.arg);
		    console.log(rlocal )
		 }  
	});

总结

提示:在使用时要仔细看文档,不要漏掉细节!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值