如何使用pjax忽略popstate初始加载

我一直在尝试使用pjax在一个小型站点上使用前后浏览器按钮,并且已经提出了以下代码来处理类更改和淡入淡出各种覆盖

然而,我发现Chrome和Safari将初始页面加载视为popstate,因此这让我很伤心。有没有办法阻止这一切

$(窗口).on(“popstate”,函数(){
if($('body').hasClass('info')){
$('body').removeClass(“info”).addClass(“work”);
$('.info_overlay').fadeOut(持续时间);
警报(“popstate”);
}else if($('body').hasClass('work')){
$('body').removeClass(“工作”).addClass(“信息”);
$('.info_overlay').fadeIn(持续时间);
}否则{
$('body').removeClass(“项目”).addClass(“工作”);
$('.project_overlay')。淡出(持续时间);
}
});

调用pushState()时标记状态,然后忽略所有没有标记的popstate事件。e、 g

history.pushState({myTag:true},…)
$(窗口).on(“popstate”,函数(e){
如果(!e.originalEvent.state.myTag)返回;//不是我的问题
//popstate处理程序的其余部分在这里
}

不要忘记在页面加载时调用replaceState,以便在返回初始页面加载时处理popstate

$(函数(){history.replaceState({myTag:true});});

发表评论