我正在尝试创建 AJAX 导航并遇到 popState 的问题。下面是一个 pushStates pageName 的函数(也将指定的 div 从 content.html 加载到 .mainwrap )。有一个自调用函数,它解析 url 并确定要加载的内容,其中有一个 popstate 事件处理程序。最后是具有数据页属性的元素的单击处理程序,以使它们“ajaxified”。我该怎么办?
function loadPageContent(pageName){
$('.mainwrap').animate({opacity: 0}, 250, function(){
$(this).empty();
$(this).load('content.html #' + pageName, function(){
$('.flexslider').flexslider({
animation: 'fade'
});
vertCenter();
$(this).animate({opacity: 1}, 250);
});
});
history.pushState({}, null, "#"+pageName);
}
$(function() {
var lastPage;
(function() {
var url = document.URL,
loadPage = url.split("#"),
data;
if(loadPage[1]) {
data = loadPage[1];
} else {
data = "home";
}
loadPageContent(data);
window.addEventListener('popstate', function(event) {
console.log('popstate fired!');
loadPageContent(lastPage);
});
}());
$(document).on('click', 'a[data-page]', function(event){
event.preventDefault();
lastPage = page;
var page = $(this).attr('data-page')
loadPageContent(page);
return false;
});
});
编辑:正如建议的那样,我在两个函数之间而不是在两个函数之间放置了“var lastPage”。还是没有修好。我正在“返回”的网址是 /#undefined