Как получить и установить текущую позицию прокрутки веб-страницы?
Как я могу получить и установить текущую позицию прокрутки веб-страницы?
У меня есть длинная форма, которая должна быть обновлена на основе действий пользователя/ввода. Когда это происходит, страница сбрасывается до самого верха, что раздражает пользователей, потому что им приходится прокручивать вниз до точки, в которой они были.
Если бы я мог захватить текущую позицию прокрутки (в скрытом вводе) до перезагрузки страницы, я мог бы затем установить ее после перезагрузки.
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); }