当前位置:首页 > 开发教程 > js/jQuery教程 >

vue如何清除浏览器历史栈

时间:2022-05-25 12:32 来源:未知 作者:深拥与我 收藏

这篇文章主要介绍了vue如何清除浏览器历史栈,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何清除浏览器历史栈

问题

需要跳转好几个页面进行表单提交,提交完之后,跳转回首页,返回上一页,发现还可以返回上一级页面路由

//可以拿到历史记录栈,清空栈
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);
 }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持源码搜藏网。


下一篇:没有了

js/jQuery教程阅读排行

最新文章