jQuery Адресная разница в поведении для кнопки браузера назад и ссылки на предыдущую страницу
Моя проблема лучше всего описана в этом скриншоте, который я записал: http://www.youtube.com/watch?v=aI-p_jqzOdU
Я использую плагин jQuery Address для 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 ответ
Хорошо, я думаю, что знаю, что не так. История запоминает прокрутку предыдущей страницы и, таким образом, кнопка возврата удерживает прокрутку. Ссылка на предыдущую страницу генерирует новое состояние истории, и, таким образом, вы не возвращаетесь в предыдущее состояние, а в новое состояние с прокруткой на нуле.