Vue-阻止页面回退
1.原生js方法
<script language="javascript"> //防止页面后退 使用在vue时 挂载到mounted中 history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { history.pushState(null, null, document.URL); }); </script>
2.vue中结合vuex方法
1.在路由配置中给这个路由添加meta信息,比如:
{ path: '/index', component: Index, 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) } }