uniapp 微信小程序阻止返回上一页

news/2024/9/18 3:50:58/文章来源:https://www.cnblogs.com/DL-CODER/p/18302753

第一种:wx.enableAlertBeforeUnload

  • 在开发者工具中预览效果
  • 微信小程序官网:点我
onShow(() => {wx.enableAlertBeforeUnload({message: "返回上页时弹出对话框",success: function (res) {console.log("方法注册成功:", res);},fail: function (errMsg) {console.log("方法注册失败:", errMsg);},});
})

第二种:page-container

page-container


  • 在开发者工具中预览效果
  • 官网:https://developers.weixin.qq.com/miniprogram/dev/component/page-container.html
  • 这是一个类似弹框的组件,具体参数可以去官网查看。
  • 返回操作包括:顶部导航、右滑手势、安卓物理返回键和调用 navigateBack 接口
  • 优点:可以自定义返回框
<template><view><text>测试阻止返回的页面</text><!-- 阻止返回 --><view v-if="isShow"><page-container :show="isShow" :overlay="false" @beforeleave="beforeleave"></page-container></view></view>
</template><script lang="ts" setup>
import { ref } from 'vue';
import { showModal, getCurrentPages, navigateBack, switchTab } from 'uni_modules/uni-popup/components/uni-popup/uni-popup';const isShow = ref(true);function beforeleave() {isShow.value = false; // 移除弹框showModal({title: "确定要退出吗",success: (e) => {if (e.confirm) {const pages = getCurrentPages();if (pages.length === 1) {// 返回到首页switchTab({url: "/pages/index", // 确保 url 是正确的});} else {// 返回上一页navigateBack({delta: 1});}} else {// 点取消,重新显示弹框isShow.value = true;}}});
}
</script>

文章后语

网上、官网上很多人只提到了这种方法可以解决阻止返回问题,却没有很好的说明,导致很多朋友在使用时并没有达到预期效果。下面这个简单理解希望可以帮助到大家。
可以简单理解为在页面生成page-container时会通知小程序需要监听用户返回操作,并且阻止返回一次。
当用户做了返回操作后,小程序执行了阻止返回,然后移除了监听,所以接着再做一次返回操作就直接返回了。
所以要达到不点击确定返回,下一次做返回操作时依旧要阻止,就可以在每次返回点取消时候,移除page-container,再重新生成一个page-container,这时就又会重新通知小程序监听返回一次,所以上文用的是v-if。

  • 参考文章:https://www.jianshu.com/p/38469b6946b5
  • 参考文章:https://developers.weixin.qq.com/miniprogram/dev/component/page-container.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于NXP i.MX 6ULL核心板的物联网模块开发案例(1)

目录 前 言 1 SDIO WIFI模块测试 1.1 STA模式测试 1.2 AP模式测试 1.3 SDIO WIFI驱动编译 前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.1.0 Linux开发环境:Ub…

T113-i最新发布Tina5.0系统!支持3大新特性!

创龙科技全志T113-i双核Cortex-A7@1.2GHz全国产工业核心板(含税79元)一经面世,就以超高性价比受到全行业关注。而创龙科技再次为T113-i处理器平台进行软件系统完善,正式适配Tina5.0系统,大大满足了全志T113-i用户的不同场景需求,让工业应用更简单。 Tina5.0系统说明 Tina…

一文教你在华为云上部署Discuz论坛网站

在KooLabs云实验平台搭建Discuz论坛网站,Discuz基础架构采用流行的 Web 编程组合PHP+MySQL实现。本文分享自华为云社区《华为云之在Linux系统下部署Discuz 论坛网站【玩转华为云】》,作者:江湖有缘。 一、本次实践介绍 1.1 实践环境简介 1.本次实践环境使用华为KooLabs云实验…

6. 打印日志信息

6. 打印日志信息 在CMake中可以用用户显示一条消息,该命令的名字为message: message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)(无):重要信息 STATUS:非重要信息 WARNING:CMake 警告,会继续执行 AUTHOR_WARNING:CMa…

5. 库相关

5. 库相关 有些时候我们编写的源代码并不需要将他们编译生成可执行程序,而是生成一些静态库或动态库提供给第三方使用,下面来讲解在cmake中生成这两类库文件的方法。 5.1 什么是库 本部分介绍创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这…

Performance Monitoring检测camstar性能

InsiteXMLServer \ Provate Bytes使用内存的字节 InsiteXMLServer \ Working Set Peak 高峰 Process \ %Processor Time CPU占用时间 InsiteXMLServer \ Elapsed Time占用时间 Camstar.Security.LMServer \ Elapsed Time CamstarNotificatuionServer\Elapsed Time CIMSagent \ …

【Bug】拓展方法必须在非泛型静态类中定义

原文链接:https://blog.csdn.net/weixin_44231544/article/details/121752347 原: 修改: 拓展方法1.定义: (1)扩展方法能使你能够向现有类型添加“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。 (2)扩展方法是一种特殊的静态方法,但可以像…

kettle从入门到精通 第七十五课 ETL之kettle血缘,数据血缘

在了解kettle血缘之前,咱们先来了解下什么是数据血缘? 1、数据血缘定义(来自gpt) 数据血缘(Data Lineage)是指在数据管理和数据分析中追踪数据的源头、流向和处理过程的能力。具体来说,数据血缘描述了数据如何被创建、变换和移动,以及这些过程中数据的路径和影响。它有…

kettle从入门到精通 第七五课 ETL之kettle血缘,数据血缘

在了解kettle血缘之前,咱们先来了解下什么是数据血缘? 1、数据血缘定义(来自gpt) 数据血缘(Data Lineage)是指在数据管理和数据分析中追踪数据的源头、流向和处理过程的能力。具体来说,数据血缘描述了数据如何被创建、变换和移动,以及这些过程中数据的路径和影响。它有…

如何实现元素的曝光监测

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:霁明一些名词解释 曝光 页面上某一个元素、组件或模块被用户浏览了,则称这个元素、组件或模块被曝光了。 视图元素 将页面上展示的…

MySQL - [17] Oracle、SQLServer、MySQL数据类型对比

题记部分 — 业精于勤荒于嬉,行成于思毁于随 —

华为云DTSE助力虎彩鲜檬优化运维效率,助力迁移上云

本文主要介绍了鲜檬摄影在数字化变革中,与华为云紧密合作,借助其DTSE专家团队,成功完成了业务系统改造、技术方案优化及迁移上云。本文分享自华为云社区《虎彩鲜檬数字化产业变革,迁移上云,助力其打造智慧婚拍新纪元》,作者: HuaweiCloudDeveloper。 来源:《华为云DTSE…