zoukankan      html  css  js  c++  java
  • 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)
        }
    }
    文章出处
    --------------------- 作者:LuviaWu 来源:CSDN
  • 相关阅读:
    linux nat路由设置
    [auv] 模拟呼叫
    Sqlserver 导出insert插入语句
    函数name属性
    学习前端,应该选择哪些书籍来看?(转)
    JavaScript继承学习笔记
    Web响应式网站
    Javascript 异步加载详解(转)
    使用 nodeinspector 调试 Node.js
    用 JavaScript 检测 CPU 占比(转)
  • 原文地址:https://www.cnblogs.com/yangchin9/p/10857659.html
Copyright © 2011-2022 走看看