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 相关文章推荐
8个非常实用的Vue自定义指令
Dec 15 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
vue实现input输入模糊查询的三种方式
Aug 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
Yii2单元测试用法示例
2016/11/12 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
vue-router传参用法详解
2019/01/19 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
使用Python读取大文件的方法
2018/02/11 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
公务员总结性个人自我评价
2013/12/05 职场文书
社区党务公开实施方案
2014/03/18 职场文书
教师求职信范文
2014/05/24 职场文书
售后客服个人自我评价
2014/09/14 职场文书
党支部考察意见范文
2015/06/02 职场文书
爱国主义主题班会
2015/08/14 职场文书
放假通知怎么写
2015/08/18 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书