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+iview实现分页及查询功能
Nov 17 Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
Vue中computed和watch有哪些区别
Dec 19 Vue.js
vue监听滚动事件的方法
Dec 21 Vue.js
vue3使用vue-count-to组件的实现
Dec 25 Vue.js
vue实现登录功能
Dec 31 Vue.js
详解Vue2的diff算法
Jan 06 Vue.js
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
如何使用vue3打造一个物料库
May 08 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
Javascript继承机制的设计思想分享
2011/08/28 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python实现多线程的两种方式
2016/05/22 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
详解python数据结构和算法
2019/04/18 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
django和flask哪个值得研究学习
2020/07/31 Python
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
自我评价如何写好?
2014/01/05 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
社区端午节活动总结
2015/02/11 职场文书
出国留学自荐信模板
2015/03/06 职场文书
小学中队委竞选稿
2015/11/20 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers