vue 禁止浏览器后退
需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换整理一下解决方法 和 使用方法:1.在路由配置中给这个路由添加meta信息,比如:{path: '/home',component: xxx,meta: {allowBack: false}}2.在全局的router.beforeEach函数里面获取allowBack的状态,同
·
需求是:需要某个路由不能通过浏览器返回,同时不影响相互之间的切换
原文地址: https://segmentfault.com/q/1010000009527093?sort=created
整理一下解决方法 和 使用方法:
1.在路由配置中给这个路由添加meta信息,比如:
{
path: '/home',
component: xxx,
meta: {allowBack: false}
}
2.在全局的router.beforeEach 函数里面获取allowBack的状态,同时更新vuex的allowBack的值,如:
let allowBack = true // 给个默认值true
if (to.meta.allowBack !== undefined) {
allowBack = to.meta.allowBack
}
if (!allowBack) {
history.pushState(null, null, location.href)
}
store.dispatch('updateAppSetting', {
allowBack: allowBack
})
这段代码得写在next()的后面,因为写在next()前面location.href并不是to的地址,这点跟vue1.0有点不同
-----更新分割线-----
location.href 获取的仍不是to的地址,所以得根据to的信息来拼起来
3.接下来就是最核心的了,在app.vue的mounted里面写onpopstate事件:
window.onpopstate = () => {
if (!this.allowBack) { // 这个allowBack 是存在vuex里面的变量
history.go(1)
}
}
原文地址: https://segmentfault.com/q/1010000009527093?sort=created
更多推荐
已为社区贡献11条内容
所有评论(0)