最近在开发中遇到以下问题,写出来记录一下
具体场景如下:
小程序如果首页直接使用<web-view>打开h5页面,在h5页面中点击跳回到小程序,小程序页是没有返回键的。
网上查找一些资料后没有合适的解决方案,思考了一下,决定自己在小程序生命周期的onLoad上处理一下。
1.小程序首页设置为h5跳回的小程序页面(非h5页面,简称页面A)。
2.设置页面A标题和h5标题一致,这样用户看不出页面发生了跳转。
3.页面A默认不显示html内容,在页面A onLoad 事件中判断是否存在h5页面跳回传递的参数,如果没有就直接跳到存在<web-view>的小程序页面中(页面B)。
4.如果获取到了h5返回的参数,则显示页面A内容,不需要跳到页面B。
具体代码如下:
页面A onLoad 部分代码
/** * 生命周期函数--监听页面加载 */ onLoad: function(options) { //获取页面B地址里的都参数 if (options.otherUserId != undefined) { //参数存全局 wx.setStorageSync('realOtherUserId', options.otherUserId); wx.setNavigationBarTitle({//修改标题 title: '身份认证' }) this.setData({ showPage: true//显示页面A }) } else { //没获取到参数 跳到页面B wx.redirectTo({url: '/pages/H5home/H5home'}) } },
页面B中 h5代码
$("#changePage").on('click',function(){//点击跳回小程序页,传参 wx.miniProgram.navigateTo({url: '/pages/idCard/idCard?otherUserId=123123'});//跳回小程序的page和传递的参数 })
这样如果从页面B跳到页面A,页面A右上角就会出现小程序自带的返回键,点击它,就回到了页面B,反复跳也没关系。
解决! 撒花ヽ(°▽°)ノ