在vuejs上监听onpopstate事件

Sun*_*ern 3 popstate vue.js

我对 Vue 还很陌生,我正在尝试弄清楚如何侦听 vuejs 上的 onpopstate 事件,以便在该事件发生时启动特定功能。我浏览了路由器文档,但找不到 vue 上 onpopstate 事件处理程序的等效项。

感谢您的帮助,威尔

cra*_*g_h 6

如果您在 SPA 中使用vue-router,那么我只需将其放置在基础组件的已创建挂钩中:

  created() {
    // Attach onpopstate event handler
    window.onpopstate = function(event) {
      alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
    };
  },
Run Code Online (Sandbox Code Playgroud)

由于基础组件提供所有视图,因此您应该会发现该事件将在整个应用程序中触发。

这是 JSFiddle 向您展示此设置如何工作:https://jsfiddle.net/bjb8ukb8/

  • 你的代码不起作用。事件 onpopstate 永远不会被触发,因此不会执行任何警报。我在我的应用程序中测试了类似的代码,但警报也从未被触发。也许 VUE 路由器以奇怪的方式更改历史记录,因为当我手动导航时,location.hash="/sth" onpopstate 被正确触发。 (2认同)