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-cli 创建模板项目
Nov 19 Vue.js
Vue组件生命周期运行原理解析
Nov 25 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
vue递归实现树形组件
Jul 15 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
vue移动端路由切换实例分析
2018/05/14 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
python实现探测socket和web服务示例
2014/03/28 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
python利用正则表达式提取字符串
2016/12/08 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
Python之Class&Object用法详解
2019/12/25 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
python实例化对象的具体方法
2020/06/17 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
耐克亚太地区:Nike APAC
2019/12/07 全球购物
九年级政治教学反思
2014/02/06 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
中学生学习保证书
2015/02/26 职场文书
道歉信怎么写
2015/05/12 职场文书
走近毛泽东观后感
2015/06/04 职场文书