uniapp向webview传递参数

方法一 url传参

 // 引入 upload.html 并通过 url 传入 token 参数
  const token = uni.getStorageSync('Authorization')
  this.wv = plus.webview.create(`/hybrid/html/upload.html?token=${token}`, '', {
    'uni-app': 'none',
    top: '50%',
    left: '80%',
    background: 'transparent'
  });
  var currentWebview = this.$scope.$getAppWebview();
  currentWebview.append(this.wv);

弊端:

1.参数会被抓取,如果携带敏感信息会存在安全隐患;

2.url会有长度限制,如果携带的数据过多会传不过去;

3.没有对应的webview向app传参的回传方法;

方法2 plus.webview.create(url, id, style, {data:{}})的方法携带参数,并使用uni.postMessage()的方法回传参数。

let wv = plus.webview.create(
    'xxx.xxxx.xxx?',//date保证不走缓存
    'batch_view',
    {
        top: '0',
        left: '0',
        height: '100%',
        width: '100%'
    },
    {
        data: {
            token: token,
            userInfo: userInfo,
            implantType: 'uniapp'
        }
    }) //不用data键值对的方式传的话,h5接收后会是多个字段,而非一个对象
let currentWebview = this.$mp.page.$getAppWebview()
currentWebview.append(wv);//重要,否则会失效

html中

if (window.plus) {
				plusReady();
			} else {
				document.addEventListener('plusready', plusReady, false);
			}
function plusReady() {
					const data = plus.webview.getWebviewById("batch_view").data;//上传时最后一个参数
					
					
					var xhr = new XMLHttpRequest();
					xhr.open('POST','url');//url你要上传的地址
					xhr.send(formData);
					xhr.onreadystatechange=function(){
						if(xhr.readyState===4&&xhr.status===200)
						{
							console.log("上传成功",xhr.responseText);
							//接收返回的结果并展示出来
							var data = JSON.parse(xhr.responseText)
							
						}
					};
				
			}

参考

(48条消息) uni-app和web-view页面相互传参_uniapp向webview发送数据_湫风洛夜的博客-CSDN博客

uniwebview传参到html5网页 - DCloud问答

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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页面传值的方法,开发者可以根据实际情况选择适合自己的方式来进行传值操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值