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单元格多列合并的实现
Nov 26 Vue.js
Vue中inheritAttrs的使用实例详解
Dec 31 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
vue 动态添加的路由页面刷新时失效的原因及解决方案
Feb 26 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
Vue router配置与使用分析讲解
Dec 24 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中for循环语句的几种变型
2007/03/16 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
JS编程小常识很有用
2012/11/26 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
urllib2自定义opener详解
2014/02/07 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python实现汉诺塔算法
2021/03/01 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
python接入支付宝的实例操作
2020/07/20 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
如何理解委托
2012/01/06 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
求职简历自我评价范文
2015/03/10 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
离婚案件原告代理词
2015/05/23 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
以下牛机,你有几个
2022/04/05 无线电
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers