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项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue监听滚动事件的方法
Dec 21 Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 Vue.js
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue动态绑定style样式
Apr 20 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 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
服务器web工具 php环境下
2010/12/29 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP中使用虚代理实现延迟加载技术
2014/11/05 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Python如何测试stdout输出
2020/08/10 Python
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
刘胡兰的英雄事迹材料
2014/02/11 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
办公室主任职责范本
2014/03/07 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2014小学年度工作总结
2014/12/20 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
机器人瓦力观后感
2015/06/12 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android
mysql的Buffer Pool存储及原理
2022/04/02 MySQL