我正在使用历史API在不重新加载页面的情况下向网页推送新URL。我有多个按钮,每个按钮都有不同的功能。
我的脚本现在几乎没有问题。当我按下按钮时,会发生某些事情,并且当我返回时,脚本会触发事件监听器而不重新加载页面。
然而,当我现在按前进按钮时,我想往前走。URL已正确更改为下一个URL,但事件监听器仍会触发,就像按下后退按钮一样。
示例:
index1.html
- 按钮按下 →
index2.html
- 按钮按下 →
index3.html
- 后退按钮按下 →
index2.html
- 前进按钮按下 → URL现在是
index3.html
,但内容是index1.html
我猜这是因为我有一个监听器,监听popstate
,它会在按下后退按钮和前进按钮时触发。如何区分按下了哪种类型的按钮?
这是绑定监听器的部分:
if (window.history && window.history.pushState) {
$(window).unbind('popstate');
$(window).bind('popstate', function (e) {
clearOverlays();
var url = URL
$.ajax ( {
url : url
}).done ( function ( data ) {
console.log(data);
});
});
}
state
变量:history.pushState(**{ status: "OpenFile" }**, "Open", "irrelevanturl.html");
。请注意,不要改变原来的意思。 - CodingIntrigue