Javascript 如何使用vue路由器检查用户是否进入上一页?

Javascript 如何使用vue路由器检查用户是否进入上一页?,javascript,vue.js,vue-router,html5-history,lightgallery,Javascript,Vue.js,Vue Router,Html5 History,Lightgallery,上下文 我有这个插件,我注意到当它处于全屏状态时,点击上一页按钮将不会关闭LightGallery,而是“无声地”进入上一页,而用户不会意识到它 在我的例子中,我正在使用VueJS和VueRouter构建SPA,当用户在单击上一页后关闭LightGallery时,会感到困惑,因为用户希望回到他/她所在的位置 我知道VueRouter有导航卫士,但我错过了一个功能,可以轻松知道用户是否返回 我正在“历史”模式下使用VueRouter 当我使用“历史”模式时,我想这就解释了为什么LightGalle

上下文

我有这个插件,我注意到当它处于全屏状态时,点击上一页按钮将不会关闭LightGallery,而是“无声地”进入上一页,而用户不会意识到它

在我的例子中,我正在使用VueJS和VueRouter构建SPA,当用户在单击上一页后关闭LightGallery时,会感到困惑,因为用户希望回到他/她所在的位置

我知道VueRouter有导航卫士,但我错过了一个功能,可以轻松知道用户是否返回

我正在“历史”模式下使用VueRouter

当我使用“历史”模式时,我想这就解释了为什么LightGallery插件没有帮助。它只对我的路由显示一个散列,但是VueRouter独立于此散列工作

问题

如何知道用户是否使用VueRouter进入上一页

在“历史”模式下,VueRouter正在使用历史API。有没有办法用它来提供线索?或者我最终应该手动存储历史记录并在每次路线更改时进行处理


我发现我们可以使用
window.onpopstate=function(){}
收听上一页/下一页,但我可以仅使用此方法专门检查上一页吗?

在我的路由器实例中,我有:

const router = new Router({
 mode: "history",
 scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      to.meta.fromHistory = true;
      return savedPosition;
    } else {
      return { x: 0, y: 0 };
    }
  },
 // (...)
然而,正如你所提到的,没有明确的方法来判断这是一次后退还是前进

据这位官员说:

scrollBehavior
函数接收
to
from
路由 物体。第三个参数,
savedPosition
,仅在以下情况下可用 这是一个
popstate
导航(由浏览器的 后退/前进按钮)


您可以使用
路由器将
routeFrom
存储在变量中,或者存储在
routeTo.meta
属性中。每次
global after hook后,我认为您应该使用组件防护中的
beforeRouteAve
并关闭LightGallery(如果它打开)。这对我来说更有意义,除非我遗漏了什么。这很有意义,唯一让我感到困扰的是,即使用户单击“转发页面”浏览器按钮,也会触发此事件,我想阻止它。我希望有一些现有的最先进的方法来检测使用VueRouter的前一页事件。