14

我正在使用推送状态构建一个 Html 5 网站,我想知道它是否可以在 javascript 或 JQuery 中检测浏览器的后退按钮是否已被按下。我想将它包含在这样的 if 语句中:

if (back_btn clicked){
//do stuff
}
if (forward_btn clicked){

}
4

2 回答 2

19

您正在寻找popstate 事件

一个例子:

window.onpopstate = function(event) {
    alert("location: " + document.location);
}

或者使用流行的 jQuery:

$(window).on('popstate',function(event) {
    alert("location: " + document.location);
});

每当访问历史记录时都会触发,例如后退/前进。快速说明,在 Chrome 中,这也会在页面加载时触发,因此一种快速的方法是检查事件是否为空。

if(event.originalEvent.state!=null){
    // do something
}

另一个很好的资源是History.js jQuery 插件,它有一个使用主题标签等的后备。它还使 popstate 事件的检测非常简单。

于 2013-01-29T15:12:42.487 回答
2

对于 AngularJS

$window.onpopstate = function(e) {
    $window.alert("location: " + $location.path());
}
于 2015-07-23T01:37:17.400 回答