【发布时间】:2015-01-12 23:32:14
【问题描述】:
我在这里与 pushState 和 onpopstate 事件作斗争。在我通过 AJAX (a#itemPages) 链接浏览时,浏览器中的后退按钮按预期工作。但是,如果我之后单击普通链接并按浏览器中的后退按钮返回,我将无法前进到应该在更糟糕的历史记录中的普通链接。我仍然能够在“ajaxified”链接之间来回移动,但是应该在浏览器历史记录中稍后存在的正常链接只会消失(FF 中的前进按钮滑出,就像在实际项目之后历史记录中没有其他项目一样)。此外,最后一次点击历史中出现的“ajaxified”链接两次。
$('body').on('click', 'a#itemPages', function(event){
$(#plc).hide().fadeIn('slow');
$.get($(this).attr('rel'), function(data) {
$(#plc).html(data);
});
var stateObj = { URL: $(this).attr('rel') };
history.pushState(stateObj, null, $(this)[0].href);
return false;
});
window.onpopstate = function(e) {
if (e.state !== null) {
var prevstate = e.state.URL;
$('#plc').hide().fadeIn('slow');
$.get(prevstate, function(data) {
$('#plc').html(data);
});
}
};
【问题讨论】:
-
需要更多 event.preventDefault()
-
不幸的是,这没有帮助。我给了它一个机会……
-
对不起,伙计们。索引页面上还有另一段 JS 也操纵了历史。这带来了问题。关闭这个问题。
标签: javascript pushstate