如何区分浏览器的后退/前进按钮?

7

这是否可能?更好的是,是否可以使用jQuery实现?

我需要知道用户是点击“后退”按钮还是“前进”按钮,以便我可以正确地使用页面转换效果,例如,如果他们点击“前进”按钮,则从左侧滑动到右侧,反之亦然。

5个回答

5
你可以使用really simple history库。但是如果你想自己处理,你可以使用哈希键(window.location.hash),例如设置幻灯片编号。当用户点击返回或下一页时,哈希键将更改,您检测到它并进行更改。不幸的是,您必须自己检查更改,通过设置一个间隔(即:300ms)并检查先前的值。HTML5有一个onhashchange事件。

3

@David

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


2
用户可以在不使用浏览器的“返回”按钮的情况下回到上一页。他可以右键点击并从上下文菜单中选择“后退”或“前进”选项。他也可以使用键盘导航到另一页。因此,捕获“返回”按钮的单击可能不是一个好主意。

2

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


0

我们的一个指导设计原则是:

永远不要破坏浏览器的后退按钮。

这意味着不要干扰它的操作,也就是让它保持原样。

如果你一定要知道用户按下了哪个按钮,那么你基本上没什么办法,这是有意为之的。编写浏览器的人不希望你这样做,我也不希望你干扰后退按钮的功能。用户也不希望你这样做。所以,不要这样做。

/发泄完毕。


1
我绝不打算破坏返回按钮。只是需要它进行页面转换。 - Ken Vu
2
修复后退按钮怎么样?例如,在一个使用ajax的页面中,后退按钮将带您返回到某个先前的页面,但不是立即前一页(因为它已经被ajax修改了)? - user21037
很好。作为一项规则,我不会在这种转换中使用AJAX。 在我看来,如果UI确实需要显示不同的页面,则应将其带到不同的页面。 AJAX应该用于呈现交互式UI,而不是重新定义预期的浏览器行为。 - 3Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接