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 18 Vue.js
Vue3配置axios跨域实现过程解析
Nov 25 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 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
德生1994机评
2021/03/02 无线电
PHP如何编写易读的代码
2007/07/10 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
3种php生成唯一id的方法
2015/11/23 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
2019/10/24 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python开发常用的一些开源Package分享
2015/02/14 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
什么是View State?
2013/01/27 面试题
工作疏忽检讨书
2014/01/25 职场文书
高二物理教学反思
2014/02/08 职场文书
身边的榜样活动方案
2014/08/20 职场文书