2010-01-23 35 views
7

这可能吗?甚至更好,是否有可能与jQuery?如何区分浏览器后退/前进按钮?

我需要知道是否使用点击返回按钮或向前按钮,所以我可以正确使用页面转换效果,例如。如果他们前进,则从左至右滑动,反之亦然。

回答

5

可以使用really simple history

但是,如果你想自己处理,你可以通过设置例如幻灯片编号有使用哈希键(window.location.hash)。 当用户点击后退或下一步时,散列键将改变,您检测到并进行更改。

不幸的是,您必须通过设置一个间隔(即:300毫秒)来检查更改,并检查以前的值。 HTML5有一个onhashchange事件。

2

用户无需点击浏览器中的“返回”按钮即可转到上一页。他可以右键单击并从上下文菜单中选择Back或Forward选项。他还可以敲击键盘导航到另一页。因此,抓住后退按钮点击并不是一个好主意。

1

我们的一个导向的设计原则是这样的:

永远,永远,永远无法打破的后退按钮。

这意味着不干扰它的操作,这意味着保持独立。

如果您必须知道用户按下了哪个按钮,那么您的运气非常不好,而且这是设计出来的。编写浏览器的人不希望你这样做。我不希望你干涉后退按钮功能。用户不希望你。所以,不要。

/rant。

+0

我不打算打破后退按钮,从来没有。只需要它用于页面转换。 – 2010-01-23 11:12:55

+2

如何修复后退按钮?例如,在ajax页面中,后退按钮可将您带到某个先前页面,而不是前一页面(因为它已用ajax修改)? – Dan 2011-01-24 06:59:13

+0

够公平的。通常,我不会使用AJAX进行这种转换。 *在我看来*,如果UI真的需要显示不同的页面,那么他们应该被带到另一个页面。 AJAX应该用于呈现交互式UI,但不用于重新定义预期的浏览器行为。 – 2011-07-19 14:32:54

2

您可以使用历史记录对象。它具有已访问页面的数组。最近的条目是最后一个向前或向后按钮页面。

2

@大卫

由于浏览器的后退按钮不跟踪Ajax请求,开发商别无选择,只能suppliment缺乏的功能。使用jquery,我们必须手动跟踪ajax请求,并手动重新请求部分页面,以便为用户提供他们想要和期望的内容。