单独定位浏览器的后退和前进按钮

5
我将使用JavaScript代码片段来同时针对“后退”和“前进”按钮,如下所示:

我正在使用以下JavaScript代码片段来同时针对“后退”和“前进”按钮:

window.addEventListener("popstate", function(event) {
   // do something cool
}   

我该如何区分“后退”和“前进”按钮并单独触发它们的事件?

2
我能想到的一种方法是:当你使用 pushState 时,向状态对象添加一个数字,并在每次使用 pushState 时递增它。现在,当你前进或后退时,你可以将该数字与当前状态进行比较,并检查该数字是变大还是变小。不确定这是否有效,但这是一个想法。 - gen_Eric
不用谢。我不知道有没有“官方”的方法来做这件事,但那听起来应该可以。我有点忙,所以没时间编写一个示例 :-) - gen_Eric
3
也许值得看一下History.js,虽然我认为它更多只是用于触发事件,不确定是否可以轻松地挂钩到事件上。 - DACrosby
1个回答

0
如果你正确实现了它,就不需要跟踪后退/前进或历史记录。每个加载的XML文件都应该被赋予一个唯一的ID,只需用下划线替换正斜杠,并记住不应将下划线用于实际URL,而应改用破折号。假设你没有一个URL方案,使得使用Windows 8相比之下看起来像是非自愿的,那么你只需检查所请求的ID即可。
你可以在我的网站上看到popstate的工作原理...

http://www.jabcreations.com/blog/

在程序中按下Ctrl+f,然后查看从该行开始的代码...
window.onclick = function(e)

...这里...

http://www.jabcreations.com/scripts/index.js

如果您正在使用Firebug,请展开#liquid(在我的XHTML中,它实际上是<body><div id="body"><div id="content"><div id"liquid">)。
如果您迷失了方向,请告诉我,我会澄清代码的作用。此外,将您的代码设置为尽可能严格(XHTML作为application/xhtml+xml,您的XML内容应作为application/xml提供)也会极大地帮助。

将内容作为application/xhtml+xml提供是破坏IE 8的好方法。此外,如果您的网站崩溃,这个答案就没用了。请避免链接并在此处包含代码。 - user247702
感谢您的投票 @Stijn!显然您从未听说过内容协商。 >__> 您还明显使用IE8或更早版本访问了我的网站(并没有)在毫无思考地投票之前确认了这一点。Figaro提出了一个模糊的问题,得到了答案并接受了它,显然他们的能力让您感到不满。 - John
然后你应该完成并提到IE 8问题。我有两个原因对你进行了投票,实际上我会再加一个。XHTML已被HTML 5取代。 - user247702

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