VUE 重写浏览器返回事件,实现指定页面不再触发返回需求

使用说明:
1、在router文件中引入并注册实例,js文件在最下方

import History from "./history.js";
History.setRouter(router);

2、在router.beforeEach中调用判断方法: canBack() ,并将返回值放入 next() 方法中

router.beforeEach((to, from, next) => {
	let flag = History.canBack(from);
	next(flag);
});

3、在需要限制返回的路由的meta中添加backFlag

routes: [
	{
	    path: '/',
	    name: 'homePage',
	    component: HomePage,
	    meta: {
	       backFlag: false
	    }
	},
]

4、调用使用vue自带 this.$router.go(n) 即可

5、如需更改:this.$route.meta.backFlag = true

history.js文件

const History = {
   router: null,// 路由实例

   // 保存当前路由实例
   setRouter(router) {
      router.isBack = false;// 初始化页面返回flag
      this.router = router;
   },

   // true--跳转&&允许返回,false--不允许返回
   canBack(from) {
      let flag = true;// 默认允许跳转

      // 判断是否为不允许返回页面
      if (this.router.isBack && from.meta.backFlag == false) {
         flag = false;
      }

      // 重置页面返回flag
      this.router.isBack = false;
      return flag;
   }
}

// 重定义浏览器返回事件
window.onpopstate = () => {
   History.router.isBack = true;
}

export default History;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值