h5或uniapp或微信小程序,实现左上角返回到指定页面,侧滑左滑返回指定页面,安卓物理返回键返沪指定页面解决思路的思考

h5或uniapp或微信小程序,实现左上角返回到指定页面,侧滑左滑返回指定页面,安卓物理返回键返沪指定页面

uniapp开发app,(非微信小程序)

自定义的左上角返回按钮

html 复制代码
<i class="iconfont icon-zuojiantou" style="font-size: 24px;" @click="goBack()"></i>

方法

javascript 复制代码
goBack(){
			
				let pages = getCurrentPages();
				//函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面
				var num=pages.length
				//当前页面栈总数
				var backnum
				//需要返回的页数
				for(var i =0;i<num;i++){
					//循环找到指定页面路由所在的页数
					if(pages[i].route=='pages/xxx/xxx'){
					console.log(pages[i].route,'pages[i].route')
					//'pages/xxx/xxxx'你需要返回的页面路由
						backnum=num-i-1
						//计算返回的层数,总数-指定页面页数-1
					}		
				}
				console.log(backnum,'backnum')
				uni.navigateBack({
					delta:backnum
						//返回的页面数,如果 delta 大于现有页面数,则返回到首页。
				})
			
		},

安卓物理返回键监听,该方法与生命周期函数同级,也可以尝试放在methods里面。

javascript 复制代码
onBackPress(options){//这里是监听安卓物理返回键或者侧滑左滑返回方式
		if(options.from=='navigateBack'){
			return false
		}else if(options.from=='backbutton'){//物理键默认返回上一级,我们在这里进行了处理
			this.goBack()//走我们自己的方法
			return true
		}else if('xxxx){//也可以是其他方式
		
		}
	}

uniapp写的微信小程序

思路,因为uniapp写的微信小程序用onBackPress监听不到不支持监听安卓物理返回,所以换了个想法,默认认为是安卓物理键或者侧滑左滑返回:如果是我自己的按钮,就走goBackFn的方法,把androidReturn设置为true,离开页面就不会执行beforeDestroy里面的方法;如果是物理按钮返回,那么离开页面,会触发生命周期函数beforeDestroy,所以在销毁页面前,判断是否为物理按键返回,是则调用goBack

自己写的左上角返回按钮
<i class="iconfont icon-zuojiantou" style="font-size: 24px;" @click="goBackFn()"></i>

data里面定义参数

javascript 复制代码
androidReturn:true,//默认安卓物理键返回

定义方法

javascript 复制代码
goBack(){
	let pages = getCurrentPages();
				//函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面
				var num=pages.length
				//当前页面栈总数
				var backnum
				//需要返回的页数
				for(var i =0;i<num;i++){
					//循环找到指定页面路由所在的页数
					if(pages[i].route=='pages/xxx/xxx'){
					console.log(pages[i].route,'pages[i].route')
						backnum=num-i-1
						//计算返回的层数,总数-指定页面页数-1
					}		
				}
				console.log(backnum,'backnum')
				uni.navigateBack({
					delta:backnum
						//返回的页面数,如果 delta 大于现有页面数,则返回到首页。
				})
}

生命周期钩子函数写代码,可以实现微信小程序自带的左上角返回,和安卓物理键,侧滑左滑返回

javascript 复制代码
//uniapp内置了vue,所以可以用vue的生命周期
beforeDestroy() {
		if(this.androidReturn){console.log('物理键返回')
			this.goBack()
		}
	},

自定义左上角安检的返回

javascript 复制代码
goBackFn(){
			this.androidReturn=false;
			this.goBack();
		},
相关推荐
Xzaveir10 小时前
不要用一个状态表示“号码已认证”:企业号码身份的四域模型
android·人工智能
爱勇宝11 小时前
上线 20 多天后,我才发现小程序的图片上传一直不可用
微信小程序·智能小程序
(Charon)11 小时前
【C++】手写 MySQL 连接池(二):同步连接的获取、加锁与释放
android
zhangjin112012 小时前
AOSP下载
android
Mico1813 小时前
MySQL 8.0.35 GTID 主从复制搭建-基于GITD
android·mysql·adb
YXL1111YXL14 小时前
LeakCanary 源码解析检测泄露工作机制(一)
android·leakcanary
且随疾风前行.16 小时前
Android Binder 驱动 - 内核驱动层源码初探
android·网络·binder
额恩6616 小时前
AI 智能体从零搭建实战教程——扣子
android·rxjava·coze
hunterandroid17 小时前
前台服务适配与线上排查:通知权限、启动限制和任务保活
android·前端
帅次17 小时前
Android 高级工程师面试:Flutter 渲染与性能 近1年高频追问 20 题
android·flutter·面试·渲染·性能