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 = nullplus.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) { //判断之前有没有初始化plusplus.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.hqwc.cn/news/284085.html

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

相关文章

【MySQL学习之基础篇】概述

文章目录 1. mysql的启动和停止命令2. 客户端连接3. 数据模型 1. mysql的启动和停止命令 通过指令启动或停止&#xff0c;以管理员身份运行cmd&#xff0c;进入命令行执行如下指令&#xff1a; &#xff08;1&#xff09;启动myaql net start mysql&#xff08;2&#xff09;…

深度学习14—注意力机制与自注意力机制

注&#xff1a;以下均为个人学习笔记&#xff0c;发布只为方便学习阅读&#xff0c;若觉侵权&#xff0c;请联系删除&#xff01;&#xff01; 1.李沐老师课堂学习理解笔记 1.1 随意线索和不随意线索 1.2 注意力机制 通过注意力池化层来有偏向性的选择某些输入。 1.3 注意力…

class084 数位dp-上【算法】

class084 数位dp-上【算法】 算法讲解084【必备】数位dp-上 code1 357. 统计各位数字都不同的数字个数 // 统计各位数字都不同的数字个数 // 给你一个整数n&#xff0c;代表十进制数字最多有n位 // 如果某个数字&#xff0c;每一位都不同&#xff0c;那么这个数字叫做有效数字…

【XR806开发板试用】Wi-Fi测试:自定义发送802.11帧(Beacon篇)

XR806是一款使用ARMv8-M的Wi-Fi BLE Combo MCU。本文使用XR806开发板以及基于FreeRTOS的XR806 SDK实现了自定义发送802.11 Beacon帧&#xff0c;并进行了无线抓包分析以及扫描测试来验证帧的发送结果。 环境配置过程 环境搭建可以参考官方文档开发环境搭建。本测试中使用的开…

社交电商第一步怎么做?适合商家引流裂变的电商运营模式有哪些?

社交电商第一步怎么做&#xff1f;适合商家引流裂变的电商运营模式有哪些&#xff1f; 老生常谈&#xff1a;做电商一定要培养自己的私域&#xff0c;社交电商的定义就是通过熟人经济的方式&#xff0c;通过各种电商运营模式让用户盘活起来&#xff0c;利用病毒式的营销玩法&am…

如何在本地Docker中部署MinIO服务并实现远程访问管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

2023本四前端社招面经

美团 全程问项目&#xff0c;根据项目提问&#xff0c;SEO优化方案&#xff0c;还出了一道动态规划的题 SEO优化方案 一、内部优化 META 标签优化&#xff1a;例如&#xff1a;TITLE&#xff0c;KEYWORDS&#xff0c;DESCRIPTION &#xff08;TDK&#xff09;等的优化 内部链接…

开源微信商城新零售网店,多商户小程序

源码介绍 小玄猪商城是一套基于前后端分离的B2B2C商城系统&#xff0c;支持微信小程序、支付宝小程序、H5商城、APP商城。支持多商户入驻、适用于直播商城、社交电商、团购、拼团、秒杀、砍价、活动报名、客户管理、知识付费、积分商城、抽奖活动、会员卡、权益卡、成长值、预…

云原生基础入门概念

文章目录 发现宝藏云原生的概念云原生的关键技术为何选择云原生&#xff1f;云原生的实际应用好书推荐 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 云原生的概念 当谈及现…

范仲淹:文能治盛世,武可镇山河

北宋景佑元年&#xff08;公元1034&#xff09;年&#xff0c;范仲淹回乡祭拜范氏宗祠。在苏州祖宅住了几天后&#xff0c;范仲淹决定在苏州南园旁边买一块地&#xff0c;在此处盖一处房屋&#xff0c;待老迈时回乡居住。 按照家乡的风俗&#xff0c;在破土动工之前&#xff0c…

【Vue】console.log()打印对象显示点点点,js打印语句显示省略号 | 解决方案

问题描述 提示&#xff1a;这里简述项目相关背景&#xff1a; 在console.log打印对象或者数组时&#xff0c;里面会显示小数点 解决方案&#xff1a; 其实用深拷贝&#xff0c;JSON.parse(JSON.stringify())可以解决&#xff0c;但是每次都在log语句里面写这个json转换&#…

Pycharm enable IntelliBot #patched后,工程无法打开

#本地环境# Pycharm&#xff1a;2023.12 Pro 对应robot pkg版本&#xff1a; robotframework 6.1 robotframework-databaselibrary 1.2.4 robotframework-pythonlibcore 4.1.2 robotframework-requests 0.9.4 robotframework-seleniumlibrary 6.1.…