2013-11-22 2 views
1

я функция, которая загружает динамический контент из базы данных, он вызывается, когда некоторые ссылки щелкнула:window.onpopstate только осуществление диапазона страниц одного

JQuery

<script> 
function loadContent(href){ 
$.getJSON("/route", {cid: href, format: 'json'}, function(results){ 
$("#content_area").html(""); 
$("#content_area").append(results.content); 
reinitFunc1(); 
reinitFunc2(); 
reinitFunc3(); 
// history.pushState('', 'New URL: '+href, href); 
}); 
}; 
</script> 

Я желая включить pushState и onpopstate.

Я могу включить изменение URL и истории браузера, раскомментируя приведенную выше строку history.pushState - правильная перемотка вперед и назад по нескольким страницам.

Но это не загружает контент.

Некоторое время назад я думаю я имел полную функциональность (т.е. навигации и загрузки контента) с добавлением этих элементов:

window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 

поэтому я попытался добавить их в отдельный блок:

<script> 
$(document).ready(function() { 
window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 
}); 
</script> 

Но это приводит к тому, что диапазон страниц при навигации ограничивается одним, и я не могу перемещаться вперед.

Как я могу достичь как навигации, так и загрузки контента с использованием вышеуказанного кода в качестве основы?

Редактировать

И для справки, правильные пути в истории браузера, это просто они не могут быть перемещаться (FF и Chrome) и соответствующий контент не загружается. Ошибок в Firebug нет.

ответ

0

Я думаю, что это ответ, я наткнулся на это:

https://stackoverflow.com/a/10176315/1063287

"Кроме того, убедитесь, что страницы загружаются в onpopstate() не пытаться подтолкнуть использование PushState() сами" ,

Так я все это:

<script> 
$(document).ready(function() { 
window.onpopstate = function(event) { 
console.log("pathname: "+location.pathname); 
loadContent(location.pathname); 
}; 
}); 
</script> 

Но удалили это из функции:

history.pushState('', 'New URL: '+href, href); 

И добавил он вместо того, чтобы к JQuery срабатывает на клик, например:

$(document).on("click","#main_menu a", function (e) { 
href = $(this).attr("href"); 
loadContent(href); 
history.pushState('', 'New URL: '+href, href); 
e.preventDefault(); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^