jQuery Адресная разница в поведении для кнопки браузера назад и ссылки на предыдущую страницу - PullRequest
0 голосов
/ 30 ноября 2010

Моя проблема лучше всего описана с этой записью, которую я записал: http://www.youtube.com/watch?v=aI-p_jqzOdU

Я использую плагин «Адрес jQuery» для глубоких ссылок Ajax. Для тех, кто не знает, как работает адрес jQuery, он работает, слушая изменения хеша методом change(). Нажатие кнопки «Назад» и нажатие гиперссылки на URL предыдущей страницы должно вести себя одинаково, поскольку они вызывают один и тот же обработчик событий.

Вот оно в псевдокоде:

$address.change(function(event) {
    if (event.value != '/') { // is the image link
        Get the URL to be loaded
        Create an overlay, append it to body and set its height, width, opacity
        Put overlay on top of gallery
        Load URL into overlay then fade it in
        Set BODY to overflow: hidden
    } else { // is the gallery link
        Set BODY to overflow: auto
        Fade out overlay then remove it
    }
});

Если вы посмотрите видео, вы увидите, что нажатие ссылки на предыдущую страницу приводит к тому, что прокрутка страницы возвращается к 0. Нажатие кнопки возврата в браузере сохраняет желаемое поведение.

Что может быть не так?

1 Ответ

0 голосов
/ 02 апреля 2011

Хорошо, я думаю, что знаю, что не так. История запоминает прокрутку предыдущей страницы и, таким образом, кнопка возврата удерживает прокрутку. Ссылка на предыдущую страницу генерирует новое состояние истории, и, таким образом, вы не возвращаетесь в предыдущее состояние, а в новое состояние с прокруткой на нуле.

...