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添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue element和nuxt的使用技巧分享
Jan 14 Vue.js
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 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
FCKeditor添加自定义按钮
2008/03/27 PHP
php实现两个数组相加的方法
2015/02/17 PHP
深入理解PHP中的count函数
2016/05/31 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python多线程爬虫简单示例
2016/03/04 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
解决python "No module named pip" 的问题
2018/10/13 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
python入门之井字棋小游戏
2020/03/05 Python
jupyter 导入csv文件方式
2020/04/21 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
香港通票:Hong Kong Pass
2019/02/26 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
优秀学生获奖感言
2014/02/15 职场文书
白血病募捐倡议书
2014/05/14 职场文书
营销与策划实训报告
2014/11/05 职场文书
英语通知范文
2015/04/22 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
react中的DOM操作实现
2021/06/30 Javascript
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server