Javascript 如何使用vue路由器检查用户是否进入上一页?
上下文 我有这个插件,我注意到当它处于全屏状态时,点击上一页按钮将不会关闭LightGallery,而是“无声地”进入上一页,而用户不会意识到它 在我的例子中,我正在使用VueJS和VueRouter构建SPA,当用户在单击上一页后关闭LightGallery时,会感到困惑,因为用户希望回到他/她所在的位置 我知道VueRouter有导航卫士,但我错过了一个功能,可以轻松知道用户是否返回 我正在“历史”模式下使用VueRouter 当我使用“历史”模式时,我想这就解释了为什么LightGallery插件没有帮助。它只对我的路由显示一个散列,但是VueRouter独立于此散列工作 问题 如何知道用户是否使用VueRouter进入上一页 在“历史”模式下,VueRouter正在使用历史API。有没有办法用它来提供线索?或者我最终应该手动存储历史记录并在每次路线更改时进行处理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
我发现我们可以使用
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的前一页事件。