浏览器后退和前进按钮事件,不使用jQuery插件

3

我希望能够在用户点击浏览器的“后退”和“前进”按钮时添加特定的行为。

有没有办法用JavaScript这样说:

backButton.onclick = function() {
// do something
}

forwardButton.onclick = function() {
//do something else
}

有没有一种直接使用JavaScript完成这个操作的方法,而不依赖任何插件?

不,您要找的是HTML5历史记录API。 - SLaks
1
这个问题已经在这里得到了回答:https://dev59.com/rlPTa4cB1Zd3GeqPm9m2?rq=1 - Antoine
修改了问题以澄清 - KeithRules
1个回答

7
window.addEventListener("popstate", function(e) { // if a back or forward button is clicked

// do whatever

}

仅适用于支持HTML5的浏览器。
如果需要在其他浏览器上使用,请参考History.js

6
这很好用,我已经在我的代码中实现了。但是,如何特别区分“后退”按钮和“前进”按钮?尝试检测时,我得到了每个单击“后退”和“前进”按钮时在控制台中出现的“e”对象。这两种情况下该对象的唯一区别在于e.state的内容 - 是一个对象或null。虽然我怀疑这一点,但还是想问一下 - 这是区分这两个按钮之间差异的指示吗? - TheCuBeMan
@TheCueBeMan,我有同样的问题,“如何区分浏览器前进和后退箭头被点击。"popstate"检测只能显示其中一个被点击 - 无法确定是哪一个被点击了。我已经进行了广泛的搜索,但是没有找到任何关于这个问题的答案! - Eight Lives

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