vue如何清除浏览器历史栈


Posted in Vue.js onMay 25, 2022

如何清除浏览器历史栈

问题

需要跳转好几个页面进行表单提交,提交完之后,跳转回首页,返回上一页,发现还可以返回上一级页面路由

//可以拿到历史记录栈,清空栈
let routeHistory=history.length-1;
this.$router.go(-routeHistory);

vue返回首页后如何清空路由

需求一:从首页点击路由到A页面

  • A页面点击路由到B页面
  • B页面点击路由到C页面
  • C页面点击路由链接到D页面
  • D页面有个返回首页按钮

那么问题来了

点击返回首页后,再点击手机的返回键 会打开D页面 再按手机返回键 会打开C页面,依次类推,

如何才能实现点击返回首页后,清空路由呢

mounted () {
    if (window.history && window.history.pushState) {
        // 向历史记录中插入了当前页
        history.pushState(null, null, document.URL);
        window.addEventListener('popstate', this.goBack, false);
    }
},
destroyed () {
    window.removeEventListener('popstate', this.goBack, false);
},
methods: {
    goBack () {
        // console.log("点击了浏览器的返回按钮");
        sessionStorage.clear();
        window.history.back();
    },
} 

禁止有返回记录

mounted () {
    if (window.history && window.history.pushState) {
        // 向历史记录中插入了当前页
        history.pushState(null, null, document.URL);
        window.addEventListener('popstate', this.goBack, false);
    }
},
destroyed () {
    window.removeEventListener('popstate', this.goBack, false);
},
methods: {
    goBack () {
        // console.log("点击了浏览器的返回按钮");
        history.pushState(null, null, document.URL);
    },
} 

需求二:把浏览器的记录返回指定的页面

mounted 中:
 if (window.history && window.history.pushState) {
      history.pushState(null, null, document.URL);
      window.addEventListener("popstate", _this.onClickLeft, false);  //_this.onClickLeft是返回的点击事件
    }
 methods: {
    onClickLeft() {
    //   this.$route.query.radio支付页面到指定页面传的参数 来判断他的路由
      if (this.$route.query.radio == 1 || this.$route.query.radio == 2) {
        this.$router.push({ //返回指定页面
        });
      } else {
        this.$router.go(-1);  // 正常返回
      }
    },
// 将事件清除掉
 destroyed() {
    window.removeEventListener("popstate", this.onClickLeft, false);
  }
Vue.js 相关文章推荐
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
vue监听键盘事件的相关总结
Jan 29 Vue.js
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
vue-cropper组件实现图片切割上传
May 27 Vue.js
springboot+VUE实现登录注册
May 27 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
vue3使用vuedraggable实现拖拽功能
Apr 06 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
vue3不同环境下实现配置代理
May 25 #Vue.js
vue使用element-ui按需引入
May 20 #Vue.js
vue/cli 配置动态代理无需重启服务的方法
May 20 #Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 #Vue.js
Vue组件化(ref,props, mixin,.插件)详解
vue postcss-px2rem 自适应布局
May 15 #Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
You might like
显示程序执行时间php函数代码
2013/08/29 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python中的ceil()方法使用教程
2015/05/14 Python
python unittest实现api自动化测试
2018/04/04 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
pytorch 共享参数的示例
2019/08/17 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
主办会计岗位职责
2014/03/13 职场文书
买房协议书范本
2014/10/23 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
邹越演讲观后感
2015/06/15 职场文书
工作感想范文
2015/08/07 职场文书
2019年个人工作总结范文
2019/03/25 职场文书