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

时间:2011-09-02 14:23:42

标签: javascript html5 browser-history history.js

我有一个site,它使用带有pushState()方法的ajax导航和onpopstate()处理程序。

首次访问主页时,我显示默认内容(不带ajax)。

当某人导航离开默认页面然后“返回”时,当他们应该返回默认页面时会提供空状态。因此,它们保留在网站的第二页而不是第一页(尽管处理程序可以轻松地使用ajax来恢复初始内容)。

我解决此问题的唯一方法是在初始页面加载时执行pushState,并提供有关初始内容的信息。使用这种方法,“后退”按钮效果很好!

但如果有人在访问my site之前访问www.stackoverflow.com,则会“返回”到stackoverflow,然后再“转发”到我的网站,显示初始内容,然后重新加载,因为“弹出”状态不为空。

我可以在onPopState()处理程序中判断用户是向后还是向前?

2 个答案:

答案 0 :(得分:0)

我在Firefox中使用pageshow事件通过前进和后退按钮捕获初始进入网站时取得了一些成功。

答案 1 :(得分:0)

  

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

有一个问题。您可以跳过状态(按住后退按钮,选择所需的状态)。这让人难以置信。

  

当某人导航离开默认页面然后“返回”时,当他们应该返回默认页面时会提供空状态。因此,它们保留在网站的第二页而不是第一页(尽管处理程序可以轻松地使用ajax来恢复初始内容)。

您可以使用History.js修复该问题,并使用可选的数据持久性。