uniapp与webview之间的相互传值

1.uniapp发送数据到H5端

  1. 其实很接单、在 web-view 中只需要通过 URL 就可以向 H5 进行传参 例如在 uni-app 中:
1.uniapp端

其实很接单、在 web-view 中只需要通过 URL 就可以向 H5 进行传参 例如在 uni-app 中:

<template>
	<view class="advertisement" style=" 100%;">
		<web-view :src="url" @message="message"></web-view>
	</view>
</template>
<script>
export default {
	data() {
		return {
			url:'/hybrid/html/local.html?data='
		};
	},
	onLoad(data) {
          //这里对要传入到webview中的参数进行encodeURIComponent编码否则中文乱码
		this.url+=encodeURIComponent(data.data)
	},
	mounted() {},
	methods: {
		message(event){
			console.log(event.detail.data);
		}
	}
};
</script>

<style scoped="scoped" lang="scss">
@import './advertisement.scss';
</style>
2.H5端接受值
console.log(getQuery('data'));  //获取 uni-app 传来的值
            
            
            //取url中的参数值
            function getQuery(name) {
                // 正则:[找寻'&' + 'url参数名字' = '值' + '&']('&'可以不存在)
                let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
                let r = window.location.search.substr(1).match(reg);
                console.log(r);
                if(r != null) {
                    // 对参数值进行解码
                    return decodeURIComponent(r[2]);
                }
                return null;
            }
复制代码

2.H5端发送数据到uniapp

1.web-view
<script>
    document.addEventListener('UniAppJSBridgeReady', function() {
        //向uniapp传值
        uni.postMessage({
            data: {
                action: 'message'
            }
        });
        uni.getEnv(function(res) {
            console.log('当前环境:' + JSON.stringify(res));
        });
    });
</script>    
1.uniapp接受值
//message接受方法
<template>
    <view class="advertisement" style=" 100%;">
        <web-view :src="url" @message="message"></web-view>
    </view>
</template>

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp是一种基于Vue.js的跨平台开发框架,可以同时构建iOS、Android和web应用。在uniapp中,我们可以使用uni.navigateTo或uni.redirectTo等跳转方法来打开一个新的页面,这个新页面可以是uniapp页面,也可以是webview页面。在向webview页面传值时,我们可以通过以下几种方法实现: 1. Query参数: 可以在uni.navigateTo或uni.redirectTo方法中的url参数中添加query参数,例如: uni.navigateTo({ url: '/pages/webview?url=xxxx' }) 然后在webview页面中,使用uni.getLaunchOptionsSync()方法获取到打开webview页面时传递的参数,并进行处理。 2. 组件通信: 可以通过uniapp提供的事件总线机制来进行组件之间的通信。可以使用uni.$emit方法在uniapp页面向应用的全局事件总线发射一个事件,然后在webview页面中监听这个事件,并进行相应的处理。 3. Storage本地存储: 可以使用uni.setStorageSync方法设置一个本地存储的值,在webview页面中使用uni.getStorageSync方法获取这个值。可以在uniapp页面中通过uni.navigateBack方法返回到webview页面,并携带参数。 4. PostMessage: 可以在uniapp页面中使用uni.postMessage方法将消息发送给webview页面,然后在webview页面中使用window.addEventListener接收这个消息,并进行处理。 以上是一些常见的向uniapp中的webview页面传值的方法,开发者可以根据实际情况选择适合自己的方式来进行传值操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值