У меня есть приложение, которое сильно работает на AJAX. Однако я хочу, чтобы в нем были функции навигации. Чтобы подменить URL-адрес, я меняю location.hash для создания URL-адреса. Но если я использую back / fwd, изменяется только URL-адрес, но страница не перезагружается. Как я могу переопределить hstory.back, чтобы перезагрузить страницу.
Включение ключевых событий назад / вперед для приложения Ajax
Ответы (4)
Я не знаю другого способа, кроме непрерывного опроса, для реализации этого поведения. Реализация может выглядеть так:
var lastHash = '';
function pollHash() {
if(lastHash !== location.hash) {
lastHash = location.hash;
// hash has changed, so do stuff:
alert(lastHash);
}
}
setInterval(pollHash, 100);
Вы не можете точно зафиксировать обратное событие, но большинство этих проблем были решены - и, что хорошо, это сложная проблема.
Взгляните на действительно простую историю (также известную как RSH) и либо реализуйте ее, либо проработайте ее. чтобы увидеть, как это работает.
Ответ на этот вопрос будет более или менее таким же, как мои ответы на эти вопросы:
- Как отображать запросы Ajax в URL-адресе?
- Как Gmail обрабатывает назад / вперед в расширенном JavaScript ?
Итак, два проекта, которые вы, вероятно, захотите посмотреть, объясняют весь процесс хеш-обмена и его использование с ajax:
История jQuery (использование хэшей для управления состоянием страниц и привязки к изменениям для обновления страницы ).
jQuery Ajaxy (расширение ajax для истории jQuery, позволяющее создавать полные веб-сайты ajax, ненавязчивый и изящно разлагаемый).
Балуптонные ответы действительно хороши.
Но у вас также есть другой плагин jQuery для обработки ваших запросов ajax, это адрес.