window.onPopState()事件处理程序知道导航方向吗?(前、后)

can window.onPopState() event handler know direction of navigation? (forward,backward)

本文关键字:方向 事件处理 onPopState 程序 window 导航      更新时间:2023-09-26

我有一个网站,使用ajax导航与pushState()方法和onpopstate()处理程序。

第一次访问主页时,我显示一个默认内容(没有ajax)。

当用户从默认页面导航出去然后"返回"时,当他们应该返回到默认页面时,将提供一个空状态。因此,它们停留在网站的第二页而不是第一页(尽管处理程序可以很容易地使用ajax将初始内容带回来)。

我解决这个问题的唯一方法是在我的初始页面加载上执行一个pushState,其中包含关于初始内容的信息。使用这种方法,"后退"按钮效果非常好!

但是如果有人在去我的网站之前在www.stackoverflow.com,"返回"到stackoverflow,然后"转发"到我的网站,显示初始内容,但随后再次重新加载,因为"弹出"状态不是空的。

所以我能告诉,在onPopState()处理程序中,用户是向后还是向前?

我在Firefox中使用pageshow事件成功地捕获了通过前进和后退按钮进入站点的初始入口

window.onPopState()事件处理程序可以知道导航方向吗?(向前、向后)

有一个问题。您可以跳过状态(按住后退按钮,选择您想要的状态)。这使得它非常困难。

当用户从默认页面导航出去然后"返回"时,当他们应该返回到默认页面时,将提供一个空状态。因此,它们停留在网站的第二页而不是第一页(尽管处理程序可以很容易地使用ajax将初始内容带回来)。

你可以通过History.js的可选数据持久性来修复这个问题。