HBuilder X将Vue打包APP返回上一页退出问题、清除缓存页面历史防止返回登录页(上一页)、以及状态栏颜色切换

目录

一、返回上一页退出问题

二、清除缓存页面历史防止返回上一页

三、状态栏颜色切换


一、返回上一页退出问题

1.首先重新认识一下vue的页面跳转,这里我只说常用到的两个

goSkip(){

 //直接跳转

 this.$router.push('/test');
 this.$router.replace('/test');
  

 //带参数跳转

 this.$router.push({path:'/test',query:{id:2023}});
 this.$router.push({name:'/test',params:{id:2023}});

 this.$router.replace({path:'/test',query:{id:2023}});
 this.$router.replace({name:'/test',params:{id:2023}});

 }

push和replace的区别如下:

(1).push会把上一页的记录缓存下来,然后可以返回到上一页,也就是浏览器左上角可以点击返回

(2).replace在跳转到下一个页面时会把上一个页面的记录清除,也就是不能返回到上一页了

2.由于vue的实质是单页面的,因此在打包成APP时在没有做一些处理的情况下无论是使用push还是replace,在按返回键的时候都是退出应用

3.我们可以这么做,创建一个js文件app.js,内容如下(备注:此配置只能打包成app后有效

document.addEventListener('plusready', function () {
  var webview = plus.webview.currentWebview()
  plus.key.addEventListener('backbutton', function () {
    webview.canBack(function (e) {
      if (e.canBack) {
        webview.back()
      } else {
        // webview.close() //hide,quit
        // plus.runtime.quit()
        // 首页返回键处理
        // 1秒内,如果连续两次按返回键,则退出应用;
        var first = null
        plus.key.addEventListener(
          'backbutton',
          function () {
            // 首次按键,提示‘再按一次退出应用’
            console.log(sessionStorage)
            if (sessionStorage.getItem("quit") === "1") {
              if (!first) {
                first = new Date().getTime()
                // console.log('再按一次退出应用') // 此处可以用自定义提示
                Toast({
                  message: '再按一次退出应用',
                  position: 'bottom',
                });
                // this.$toast('提示文案');
                setTimeout(function () {
                  first = null
                }, 1000)
              } else {
                if (new Date().getTime() - first < 1500) {
                  plus.runtime.quit()
                }
              }
            }
          },
          false
        )
      }
    })
  })
})

main.js中引入app.js文件

然后打包成app就有效果了

二、清除缓存页面历史防止返回上一页

1.比如我们从登录页面进入后不希望按返回键会返回到登录页,或者退出登录后不希望按返回键从登录界面返回到之前的页面

2.操作如下

onBtnExit() {
            Dialog.confirm({
                title: '提示',
                message: '确认退出登录吗?',
            }).then(() => {

                let backlen = window.history.length - 1;//记录有多少个缓存页面
                console.log(-backlen);
                window.localStorage.clear() //清除缓存

                this.$router.go(-backlen) //后退到首页,也就是登录后进入的页面
                // this.$router.replace({
                //     name: 'Login',
                //     params: {},
                //     // force: true,
                // })
            })
                .catch(() => {
                    // on cancel
                });

        },

我们可以先返回到登录页面进入的第一个页面(也就是应用的首页),我这里还清除登录的用户缓存,然后在应用的首页vue文件的生命周期activated中进行判断是否有登录的用户信息,因为我登录会缓存用户登录信息,为了下一次用户不再需要登录直接进入首页,那么我这里就可以通过缓存中是否有用户的信息来进行退出登录,使用replace跳转到登录页,防止按返回键又回到首页中。

activated() {
        let userinfo = window.localStorage.getItem("userinfo")
        //判断是否有用户登录信息
        if (!userinfo) { 
            this.$router.replace({
                name: 'Login',
                params: {},
            })
            return
        }
        userinfo = JSON.parse(userinfo)
        console.log(userinfo);
        this.userinfo = userinfo
    }

这样就结束了

三、状态栏颜色切换

1.这个功能可能就相对复杂,首先,在之前的app.js中添加如下两个代码,初始化状态栏,如下:

代码如下: 

plus.navigator.setStatusBarBackground('#00000000'); //初始状态栏透明,你也可以是其他颜色
plus.navigator.setStatusBarStyle('dark'); //初始状态栏字体为黑色

随后在想要更换状态栏颜色的vue文件添加初始化函数如下(备注:window.plus的判断只会在打包成APP时生效,在浏览器预览只会是null,所以要打包成APP才能看到效果):

if (window.plus) { //判断之前有没有初始化plus
                plus.navigator.setStatusBarBackground("#ffffff");//白色背景
                plus.navigator.setStatusBarStyle("dark");//黑色字体
                console.log(this.show);

            } else {
                console.log(this.show);

                document.addEventListener("plusready", function () {
                    plus.navigator.setStatusBarBackground("#ffffff");
                    plus.navigator.setStatusBarStyle("dark");
                }, false);
            }

 比如下面我的底部导航有三个切换页面,首页、计划和个人中心的状态栏颜色变化

 好了,本文章到此结束!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机图形学头歌合集(题集附解)

目录 CG1-v1.0-点和直线的绘制 第1关&#xff1a;OpenGL点的绘制 第2关&#xff1a;OpenGL简单图形绘制 第3关&#xff1a;OpenGL直线绘制 第4关&#xff1a;0<1直线绘制-dda算法<> 第5关&#xff1a;0<1直线绘制-中点算法<> 第6关&#xff1a;一般直线绘…

Flink系列之:大状态与 Checkpoint 调优

Flink系列之&#xff1a;大状态与 Checkpoint 调优 一、概述二、监控状态和 Checkpoints三、Checkpoint 调优四、RocksDB 调优五、增量 Checkpoint六、RocksDB 或 JVM 堆中的计时器七、RocksDB 内存调优八、容量规划九、压缩十、Task 本地恢复十一、主要&#xff08;分布式存储…

云仓酒庄的品牌雷盛红酒LEESON分享香槟为什么是“酸”的?

云仓酒庄致力成为红酒爱好者的首选供应商。云仓酒庄品牌雷盛红酒多系列、多国家、多价位区间的多品种供货&#xff0c;使得酒品丰富而多样&#xff0c;既可以整箱方式销售&#xff0c;也可以单瓶模式购买&#xff0c;全管道使成本更低&#xff0c;降低中间仓储环节、支线物流仓…

codeforces A. Constructive Problems

分析 由图可得&#xff1a;一开始放一个&#xff0c;由于边上的无需依靠对角线 r e b u i l d rebuild rebuild &#xff0c;所以可以直接 r e b u i l d rebuild rebuild &#xff0c;这样一列就好了。然后第二列随便放一个位置&#xff0c;其他所有都可以靠对角线 r e b u…

12.18拓扑排序,DAG,模板,课程安排

拓扑排序 有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列。 无向图没有拓扑序列。 首先我们先来解释一下什么是有向无环图&#xff1a; 有向就是我们两个结点之间的边是有方向的&#xff0c;无环的意思就是整个序列中没有几个结点通过边形成一个圆环。 下图就是一个…

实战Src对ruoyi框架管理系统漏洞的复现

前言&#xff1a; 在挖src的时候&#xff0c;搜搜有没有后台弱口令能进去的&#xff1a; 发现一个弱口令进去后&#xff1a; 【这个蓝色的草丛居然堪比算是ruoyi的指纹】 看这界面&#xff0c;是不是很像ruoyi 插件一看&#xff1a; 前端vue.js 加上登录的cookie rememberM…

Python-flask 入门代码

python与pycharm安装 过程略&#xff0c;网上很多&#xff0c;记得为pycharm配置默认解释器 虚拟环境 pipenv # 全局安装虚拟环境 # 可加-U参数&#xff0c;明确全局安装&#xff0c;不加好像也可以? pip3 install pipenv #检查安装情况 pipenv --version # ---控制台输出…

Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

鸿蒙Js实战,计算器功能开发

场景&#xff1a; 通过动态设置按钮组件button实现计算器的键盘&#xff0c;通过文本text显示计算的表达书&#xff0c;可以计算&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;可以一个一个移除&#xff0c;可以重置 等。 下面我们开始今天的文章&#xff0c;还是老规…

AIGC(生成式AI)试用 15 -- 小结

断断续续的尝试在实际的工作使用中理解和测试AIGC&#xff0c;运用会越来越多、越来越广范&#xff0c;但也是时候做个小结了。 没有太用热火的ChatGPT&#xff0c;只是拿了日常最容易用到的CSDN创作助手&#xff08;每周写文章总是看到&#xff09;和文心一言&#xff08;…

【复杂网络分析与可视化】——通过CSV文件导入Gephi进行社交网络可视化

目录 一、Gephi介绍 二、导入CSV文件构建网络 三、图片输出 一、Gephi介绍 Gephi具有强大的网络分析功能&#xff0c;可以进行各种网络度量&#xff0c;如度中心性、接近中心性、介数中心性等。它还支持社区检测算法&#xff0c;可以帮助用户发现网络中的群组和社区结构。此…

机场信息集成系统系列介绍(3):机场运行核心数据库(AODB)

目录 1、背景&#xff1a;什么是AODB 2、AODB包括哪些内容 3、AODB还应该适配哪些场景 4、一点点拓展 机场运行核心数据库&#xff08;AODB&#xff09;Airport Operation DataBase 1、背景&#xff1a;什么是AODB 在机场繁重的航班保障和旅客服务背后&#xff0c;庞大的…

Prometheus如何使用 Push 方式采集目标服务器数据

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 在上篇主要介绍了从零开始&#xff1a;使用Prometheus与Grafana搭建监控系统&#xff0c;我们了解了Prometheus采集数据主要是采用Pull模式&#xff0c;即主动拉取模式&#xff0c;这种…

权重衰减weight_decay

查了好几次了&#xff0c;一直忘&#xff0c;记录一下 使用L 2 范数的一个原因是它对权重向量的大分量施加了巨大的惩罚。这使得我们的学习算法偏向于在大量特征上均匀分布权重的模型。在实践中&#xff0c;这可能使它们对单个变量中的观测误差更为稳定。 相比之下&#xff0c…

性能测试之Artillery(示例及指标)

官方文档&#xff1a;https://www.artillery.io/docs/get-started/first-test PS:文档挺详细&#xff0c;教程比较全 示例 config:http:extendedMetrics: truetarget: http://127.0.0.1:8005phases:- duration: 10 # 持续时间arrivalRate: 10 # 每秒创建10个用户rampTo: 100 …

《LeetCode力扣练习》代码随想录——字符串(KMP算法学习补充——针对next数组构建的回退步骤进行解释)

《LeetCode力扣练习》代码随想录——字符串&#xff08;KMP算法学习补充——针对next数组构建的回退步骤进行解释&#xff09; 学习路径 代码随想录&#xff1a;28. 实现 strStr() CSDN&#xff1a;【详解】KMP算法——多图&#xff0c;多例子&#xff08;c语言&#xff09; …

【算法与数据结构】LeetCode55、45、跳跃游戏 I 、II

文章目录 一、跳跃游戏I二、跳跃游戏II三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、跳跃游戏I 思路分析&#xff1a;本题目标是根据跳跃数组的元素&#xff0c;判断最终能够到达数组末端。我们引入了一个跳跃范围…

VUE中的8种常规通信方式

文章目录 1.props传递数据(父向子)2.$emit触发自定义事件&#xff08;子向父&#xff09;3.ref&#xff08;父子&#xff09;4.EventBus&#xff08;兄弟组件&#xff09;5.parent或root&#xff08;兄弟组件&#xff0c;有共同祖辈&#xff09;6.attrs和listeners&#xff08;…

【兔子王赠书第12期】赠ChatGPT中文范例的自然语言处理入门书

文章目录 写在前面自然语言处理图书推荐图书简介编辑推荐 推荐理由粉丝福利写在后面 写在前面 小伙伴们好久不见吖&#xff0c;本期博主给大家推荐一本入门自然语言处理的经典图书&#xff0c;一起来看看吧~ 自然语言处理 自然语言处理&#xff08;Natural Language Process…

【DataSophon】大数据服务组件之Flink升级

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…