Включение событий клавиш back / fwd для приложения Ajax - PullRequest
4 голосов
/ 10 марта 2009

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

Ответы [ 4 ]

7 голосов
/ 10 марта 2009

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

var lastHash = '';

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

setInterval(pollHash, 100);
3 голосов
/ 10 марта 2009

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

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

1 голос
/ 28 августа 2010

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

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

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

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

0 голосов
/ 09 ноября 2010

Ответы балуптона действительно великолепны.

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

...