У меня возникла проблема со следующей ситуацией.
- Пользователь посещает сайт
- Пользователь нажимает ссылку, которая использует history.pushState для обновления URL
- Содержимое частичной страницы, загруженное через ajax (с использованием jQuery)
- Пользователь нажимает на регулярную ссылку, которая загружает новую страницу
- Пользователь щелкает назад, чтобы вернуться к записи pushState.
- На странице теперь отображается только часть страницы, полученная с помощью ajax
Я использовал сайт pushState для разных вещей, и результат - потрясающе отзывчивое веб-приложение, но эта проблема мешает мне использовать это.
Вот пример кода:
$('a').live('click', function(){
history.pushState({}, '', this.href);
popstate(this.href);
return false;
});
popstate = function(url){
$('#content').load(url);
}
window.onpopstate = function(event){
popstate(window.location.href);
event.preventDefault();
}
Примечания:
- При размещении предупреждения в функции window.onpopstate появляется, что событие НЕ запускается на шаге 5. Является ли это ошибкой?
- Проблема возникает только при использовании ajax.
- Мне пришлось отделить функцию popstate, чтобы я мог вызвать ее после pushState. Есть ли способ вручную запустить событие window.onpopstate?