uniapp的小程序中使用web-view进行相互传参,并监听web-view的返回键

uniapp的小程序中使用web-view进行相互传参,并监听web-view的返回键

一、unaipp给webview传参

//uniapp页面中
<web-view :src="src"   @message="getMessage" @onPostMessage="getPostMessage">
			</web-view>

data() {
	return {
	nowObj:{
	     name:'' 我是uniapp的值",
	},
	src:"    "
    }
},
onLoad() {
			this.src = 'http://192.168.28.57:3333/#/signin?itemObj=' + JSON.stringify(this.nowObj)
		},
H5页面中
1.引入微信js https://res.wx.qq.com/open/js/jweixin-1.4.0.js
2.引入 uniapp 的jdk文件(去官网下到本地)(引入一定要放到body下面,不然UniAppJSBridgeReady不生效
3.写好UniAppJSBridgeReady

在这里插入图片描述

vue页面中接收值
//直接在mounted中获取
JSON.parse(this.$route.query.itemObj)   //获取到uniapp传过来的值

二、webview给unaipp传参 (index.html跟上面一样要写)

在vue的h5页面中
methods:{
    // 监听返回事件
    backChange(){
      uni.postMessage({
        data: {
          action: 'message'
        }
      })
    },
  }
在uniapp页面中通过@message拿值
<web-view :src="src" :update-title="false" @message="getMessage" @onPostMessage="getPostMessage">
			</web-view>
methods: {
		getMessage(e) {
				console.log('拿到webview传来的值', e);
		},
			
}

三、监听webview的返回键,控制是否返回小程序还是返回上一页

原因:官方说小程序使用web-view是隐藏不了导航栏的,所以只能做个监听浏览器返回按钮的操作

在需要返回小程序的页面中写入一下代码(不写的话就是简单的浏览器返回上一页)
destroyed(){
    //销毁监听
    window.removeEventListener('popstate',this.backChange,false)
  },
  mounted() {
    if(window.history && window.history.pushState){
      history.pushState(null, null, document.URL);
      window.addEventListener('popstate',this.backChange,false)
    }
  },
  methods:{
    // 监听返回事件并传参
    backChange(){
      uni.postMessage({
        data: {
          action: 'message'
        }
      })
      //navigateBack必填,否则关闭不了
      uni.navigateBack()

    },
  }
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uni-app使用Web-View包装的页面时,手机的返回默认是退去,即关闭当前页面回到上一个页面。如果我们希望修改成页面返回,即点击返回时只是回到上一个页面但不关闭当前页面,可以通过以下步骤实现。 首先,在uni-app的manifest.json文件找到对应的页面配置。在该页面配置,加入`"style": {"app-plus": {"backButtonAutoControl": "none"}}`,该配置表示不自动处理返回的逻辑。 然后,在页面相关的vue文件,定义一个新的方法,用于处理返回的逻辑。可以命名为`goBack`。在该方法使用uni-app提供的API `uni.navigateBack()`,用于返回上一个页面,不关闭当前页面。 接下来,在该页面的生命周期方法`onBackPress()`,调用我们定义的`goBack`方法。这样在用户点击返回时,会触发`onBackPress`方法,从而调用`goBack`方法,实现页面返回的逻辑。 最后,在页面的mounted生命周期方法使用`uni.plusReady()`方法,保证在plus环境下初始化时绑定返回的事件处理函数。在该方法使用`plus.key.addEventListener()`方法,监听返回的点击事件,当点击返回时,触发绑定的事件处理函数,即我们在`onBackPress`方法定义的`goBack`方法。 通过以上步骤,我们成功修改了uni-app使用Web-View包装的页面的手机返回的行为,实现了页面返回的逻辑。这样用户在点击返回时,只会回到上一个页面但不关闭当前页面,提供了更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值