检测浏览器历史记录操作

Nuv*_*ari 14 javascript jquery

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

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

}
Run Code Online (Sandbox Code Playgroud)

Pla*_*dea 18

你正在寻找popstate活动.

一个例子:

window.onpopstate = function(event) {
    alert("location: " + document.location);
}
Run Code Online (Sandbox Code Playgroud)

或者使用流行的jQuery:

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

只要访问历史记录,例如后退/前进,就会触发此消息.快速说明,在Chrome中,这也会触发页面加载,因此快速解决方法是检查事件是否为空.

if(event.originalEvent.state!=null){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

另一个很好的资源是History.js jQuery插件,它使用hashtags等进行回退.它还使得popstate事件的检测非常简单.