我的编程空间,编程开发者的网络收藏夹
学习永远不晚

uniapp微信小程序左上角返回按钮的监听方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

uniapp微信小程序左上角返回按钮的监听方法

这篇文章主要介绍“uniapp微信小程序左上角返回按钮的监听方法”,在日常操作中,相信很多人在uniapp微信小程序左上角返回按钮的监听方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”uniapp微信小程序左上角返回按钮的监听方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

项目场景:

uni-app 开发微信小程序,界面中点击左上角的返回按钮或者是系统自带的虚拟返回操作,返回前监听用户是否在页面内进行了相应操作,如果有则进行提示(提示用户是否确定要返回),如果没有则直接返回。

问题描述:

uni-app 页面生命周期中有 onBackPress ,不过不支持微信小程序。
翻看微信小程序官方文档,并未发现可以监听到左上角返回按钮的事件。
查阅相关技术文档,确认微信小程序现阶段并没有提供监听左上角返回事件的函数。

uniapp微信小程序左上角返回按钮的监听方法

原因分析:

页面A进入到页面B,用户在页面B进行了一些操作(比如到页面C选择了一些项目添加到了页面B),这时候用户从页面B返回(触发左上角返回按钮或者系统自带的返回事件)。

由于用户进行了操作,产生了滞留数据,这个数据存在了storage里面。

假设用户的返回是无意的,我们需要在用户返回页面A时进行一个确认,即弹出提示框,让用户看到这个操作会清空掉他刚才所选的项目。

如果用户确认是要返回,即返回页面A,并清空该storage。

如果用户取消返回,即误触了返回按钮等原因,这时候取消返回事件,页面停留在页面B,数据storage保留。

解决方案一:

页面A onshow 生命周期内监听 从 页面B 返回来的数据,即storage是否有值。

页面A:

onShow(){let choose = uni.getStorageSync('product'), //页面B缓存的数据obj = uni.getStorageSync('backsure'); //页面B需要用到的数据(根据实际项目开发)if(choose.length){uni.showModal({    title: '提示',content: '当前页面有未保存的数据,您确定要取消吗?',    success: function (res) {        if (res.confirm) {uni.setStorageSync('product','');        } else if (res.cancel) {uni.navigateTo({url: './pageB?data=' + obj.data})        }    }});}},methods:{topageB(){let backsure = {data : this.data //页面B需要用到的数据};uni.setStorageSync('backsure',backsure);uni.navigateTo({url: './pageB?data=' + this.data});}}

注意:此处的 backsure 仅仅是页面B所需要用到的数据(即 在onLoad()生命周期需要用到), 根据实际情况选择是否需要加上这个storage。 判断依据依然是页面B返回页面A的时候 product 这个storage是否有值。

解决方案二:

页面B 使用custom 自定义导航栏,不使用微信小程序默认的导航栏。

重写页面B 顶部的导航栏,适配所有机型,参考api :uni.getSystemInfo()。

给左上角返回按钮定义点击事件,判断是否确认返回。

为防止用户使用系统返回,页面A需要重复方案一的步骤。

页面 B:

//顶部导航栏<view class="custom_top" :><label class="iconMoney icons iconarrow-left" @click="toback"></label><text>{{thetitle}}</text></view>//生命周期中赋值导航栏高度onLoad(){let that = this;uni.getSystemInfo({success(res) {that.top_height = res.statusBarHeight; //data中 声明 top_height:0 }});}//methods方法toback(){let choose = uni.getStorageSync('product');if(choose.length){uni.showModal({    title: '提示',content: '当前页面有未保存的数据,您确定要取消吗?',    success: function (res) {        if (res.confirm) {uni.navigateBack();uni.setStorageSync('product','');        }    }});}else{uni.navigateBack();}}

页面A同方案一相同。

此方案可以实现点击左上角返回按钮的时候在当前页面(页面B)中弹框提示用户, 而方案一中仅仅是在页面B已经返回到页面A后再触发了提示。

这里页面A实现的是对用户用系统的返回按键时, 由于小程序无法监听到返回事件, 所以只能是重写需要返回的页面B的顶部导航栏, 然后给自定义的返回按钮加上点击事件, 实现当前页面弹框提示。

到此,关于“uniapp微信小程序左上角返回按钮的监听方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

uniapp微信小程序左上角返回按钮的监听方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

uniapp微信小程序左上角返回按钮的监听方法

这篇文章主要介绍“uniapp微信小程序左上角返回按钮的监听方法”,在日常操作中,相信很多人在uniapp微信小程序左上角返回按钮的监听方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”uniapp微信小程序
2023-06-30

微信小程序返回上一页的各种方法

微信小程序返回上一页的各种方法 1. navigator 这是最常见的一种跳转方式,相当于html里的a标签。但需要注意的是 该方法不能跳转tabbar页面,保留当前页面,在wxml使用 navigator url=".路径">内容/na
2023-08-19

微信小程序阻止小程序返回的两种方法

这篇文章主要给大家介绍了关于微信小程序阻止小程序返回的两种方法,分别是通过wx.enableAlertBeforeUnload和page-container,两种方法都给出了详细的实例,需要的朋友可以参考下
2023-05-17

Uniapp微信小程序实现全局事件监听并进行数据埋点的方法

niapp起源 uni-app是一个使用Vue.js开发所有前端应用的框架,下面这篇文章主要给大家介绍了关于Uniapp微信小程序实现全局事件监听并进行数据埋点的相关资料,需要的朋友可以参考下
2022-11-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录