Ответ 1
Вы ищете свойство document.documentElement.scrollTop
.
Как я могу получить и установить текущую позицию прокрутки веб-страницы?
У меня длинная форма, которую нужно обновить на основе действий пользователя/ввода. Когда это происходит, страница сбрасывается до самого верхнего уровня, что раздражает пользователей, потому что они должны прокручивать назад до точки, в которой они находились.
Если бы я мог захватить текущую позицию прокрутки (в скрытом вводе) до перезагрузки страницы, я мог бы установить ее обратно после перезагрузки.
Вы ищете свойство document.documentElement.scrollTop
.
Текущий принятый ответ неверен - document.documentElement.scrollTop
всегда возвращает 0 в Chrome. Это связано с тем, что WebKit использует body
для отслеживания прокрутки, тогда как Firefox и IE используют html
.
Чтобы получить текущую позицию, вы хотите:
document.documentElement.scrollTop || document.body.scrollTop
Вы можете установить текущую позицию на 1000 пикселей по странице следующим образом:
document.documentElement.scrollTop = document.body.scrollTop = 1000;
Или, используя jQuery (анимируйте его, пока вы на нем!):
$("html, body").animate({ scrollTop: "1000px" });
Google Chrome на Mac и iOS, кажется, всегда возвращают 0
при использовании document.documentElement.scrollTop
или jQuery $(window).scrollTop()
.
Однако он работает правильно:
window.pageXOffset
для горизонтального положения
window.pageYOffset
для вертикального положения
Я пошел с локальным решением хранения HTML5... Все мои ссылки вызывают функцию, которая устанавливает это перед изменением window.location:
localStorage.topper = document.body.scrollTop;
и каждая страница имеет это в теле onLoad:
if(localStorage.topper > 0){
window.scrollTo(0,localStorage.topper);
}
Кроме того, вы можете посмотреть плагин jQuery.ScrollTo