我在主页上有一个图像列表,单击时我触发了AJAX请求以将内容加载到灯箱。它们之间也有分页。每次用户单击下一个或上一个箭头时,我都会使用 PushState 更改 URL,并且效果很好。我的后退按钮有问题。有时我需要单击两次或更多才能返回。当它不返回时,它只是再次重新加载相同的内容。
$(document).on("click", ".content a", function(event){
event.preventDefault();
var url = $(this).attr("href");
$("body").append($overlay);
history.pushState({}, '', url);
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.append(data);
$overlay.show();
}
});
});
$(document).on("click", ".fa-angle-right", function(event){
event.preventDefault();
var url = $(this).parent("a").attr("href");
history.pushState({}, '', url);
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.html(data);
}
});
});
$(window).on("popstate", function(event) {
var url = location.href;
$.ajax({
url : url,
type : 'GET',
success : function(data){
$overlay.html(data);
}
});
});
您很可能两次推送相同的状态,可能是事件处理程序多次触发。
当您调试原因时,您将解决行为异常的 PopState :)