Включение ключевых событий назад / вперед для приложения Ajax

У меня есть приложение, которое сильно работает на AJAX. Однако я хочу, чтобы в нем были функции навигации. Чтобы подменить URL-адрес, я меняю location.hash для создания URL-адреса. Но если я использую back / fwd, изменяется только URL-адрес, но страница не перезагружается. Как я могу переопределить hstory.back, чтобы перезагрузить страницу.


person Rakesh    schedule 10.03.2009    source источник
comment
Возможно, вы захотите переименовать заголовок вопроса, чтобы он был более конкретным. Как насчет перезагрузки страницы с помощью ajax, когда пользователь нажимает кнопку возврата в браузере или что-то подобное?   -  person Antti Tarvainen    schedule 10.03.2009


Ответы (4)


Я не знаю другого способа, кроме непрерывного опроса, для реализации этого поведения. Реализация может выглядеть так:

var lastHash = '';

function pollHash() {
    if(lastHash !== location.hash) {
        lastHash = location.hash;
        // hash has changed, so do stuff:
        alert(lastHash);
    }
}

setInterval(pollHash, 100);
person Christoph    schedule 10.03.2009
comment
Спасибо, очень полезно. К нему можно добавить небольшое улучшение, если вы заключите все выражение в оператор функции, который вы вызываете немедленно, и возвращаемое значение этой функции будет функцией, которую вы написали. Таким образом можно устранить глобальную привязку. - person viam0Zah; 22.05.2009
comment
Я думаю, это то, о чем говорил Торок. Вроде нормально работает. Ощущается немного чище из-за инкапсуляции. var hashChecker = функция () {lastHash = location.hash; return setInterval (function () {if (lastHash! == location.hash) {lastHash = location.hash;}}, 50); } () - person Derek Gathright; 06.02.2010

Вы не можете точно зафиксировать обратное событие, но большинство этих проблем были решены - и, что хорошо, это сложная проблема.

Взгляните на действительно простую историю (также известную как RSH) и либо реализуйте ее, либо проработайте ее. чтобы увидеть, как это работает.

person annakata    schedule 10.03.2009

Ответ на этот вопрос будет более или менее таким же, как мои ответы на эти вопросы:

Итак, два проекта, которые вы, вероятно, захотите посмотреть, объясняют весь процесс хеш-обмена и его использование с ajax:

  • История jQuery (использование хэшей для управления состоянием страниц и привязки к изменениям для обновления страницы ).

  • jQuery Ajaxy (расширение ajax для истории jQuery, позволяющее создавать полные веб-сайты ajax, ненавязчивый и изящно разлагаемый).

person balupton    schedule 28.08.2010

Балуптонные ответы действительно хороши.

Но у вас также есть другой плагин jQuery для обработки ваших запросов ajax, это адрес.

person Thiago Diniz    schedule 09.11.2010