【发布时间】:2013-01-29 15:10:41
【问题描述】:
我正在使用推送状态构建一个 Html 5 网站,我想知道它是否可以在 javascript 或 JQuery 中检测浏览器的后退按钮是否已被按下。我想将它包含在这样的 if 语句中:
if (back_btn clicked){
//do stuff
}
if (forward_btn clicked){
}
【问题讨论】:
标签: javascript jquery
我正在使用推送状态构建一个 Html 5 网站,我想知道它是否可以在 javascript 或 JQuery 中检测浏览器的后退按钮是否已被按下。我想将它包含在这样的 if 语句中:
if (back_btn clicked){
//do stuff
}
if (forward_btn clicked){
}
【问题讨论】:
标签: javascript jquery
您正在寻找popstate event。
一个例子:
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 事件的检测变得非常简单。
【讨论】:
对于 AngularJS
$window.onpopstate = function(e) {
$window.alert("location: " + $location.path());
}
【讨论】:
popstate 事件具有 state 属性。您应该跟踪它的值以检测是否按下了后退或前进按钮。
var previousState = 0
window.addEventListener('popstate', (event) => {
if (event.state > previousState) {
console.log('Forward button pressed')
} else {
console.log('Back button pressed')
}
previousState = event.state
})
【讨论】: