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 相关文章推荐
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
Vue 数据响应式相关总结
Jan 28 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
如何使用vue3打造一个物料库
May 08 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
vue判断按钮是否可以点击
Apr 09 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
vue3不同环境下实现配置代理
May 25 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
文字幻灯片
2006/06/26 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
vue实现弹幕功能
2019/10/25 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python合并同类型excel表格的方法
2018/04/01 Python
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
在python里面运用多继承方法详解
2019/07/01 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
战略合作协议书范本
2014/04/18 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
影视广告专业求职信
2014/09/02 职场文书
美术教师求职信范文
2015/03/20 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
小学班主任工作随笔
2015/08/15 职场文书