需求:进入当前页面后,无法返回其他页面,禁止所有返回操作(手势返回、左上角返回按钮等)
解决:
方法一:wx.enableAlertBeforeUnload
wx.enableAlertBeforeUnload
在onLoad里调用:
onLoad: function(){ wx.enableAlertBeforeUnload({ message: "返回上页时弹出对话框", success: function (res) { console.log("方法注册成功:", res); }, fail: function (errMsg) { console.log("方法注册失败:", errMsg); }, }); }
方法二:page-container
返回操作包括:顶部导航、右滑手势、安卓物理返回键和调用 navigateBack 接口
<template> <view> <text>测试阻止返回的页面</text> <!-- 阻止返回 --> <!--注意一定要用v-if 才可以,不然即使showPage1设置为false,第二次也会直接返回--> <view v-if="isShow"> <page-container :show="isShow" :overlay="false" @beforeleave="beforeleave"></page-container> </view> </view> </template> <script> export default { onLoad(){ }, data(){ return { isShow: true //一开始设置为显示 } }, methods: { beforeleave(){ this.isShow = false; //这个很重要,一定要先把弹框删除掉 uni.showModal({ title: "确定要退出吗", success: (e)=>{ if(e.confirm) { //判断是上一个页面进入(返回),还是直接进入这个页面(回首页) let pages = getCurrentPages(); if(pages.length === 1){ // 返回到首页 uni.switchTab({ url: "/pages/index'" }); }else { // 返回上一页 uni.navigateBack({ delta: 1 }) } }else { //点取消,生成新的弹框 this.isShow = true; } } }) } } } </script>