vue禁用浏览器回退

解决方案

 mounted() {
      history.pushState(null, null, document.URL)
      window.addEventListener('popstate', () => {
          history.pushState(null, null, document.URL)
      })
  },
  destroyed(){
        window.removeEventListener("popstate",() => {
            history.pushState(null, null, document.URL)
        }, false);
  }

说明

history.pushState(state, title, url)

方法向当前浏览器会话的历史堆栈中添加一个状态(state)。

  • state: 状态对象可以是任何可以序列化的对象。
  • title: 当前大多数浏览器都忽略此参数,尽管将来可能会使用它。
  • url: 新历史记录条目的 URL 由此参数指定。如果未指定此参数,则将其设置为文档的当前 URL。

更多 history 的介绍参考:MDN(history)

popstate事件

传送门

当活动历史记录条目更改时,将触发 popstate 事件。如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态对象的副本。

需要注意的是调用history.pushState()history.replaceState()不会触发popstate事件。只有在做出浏览器动作时,才会触发该事件,如用户点击浏览器的回退按钮(或者在Javascript代码中调用history.back()或者history.forward()方法)

posted @ 2021-07-15 17:44  至安  阅读(1137)  评论(0编辑  收藏  举报