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