Как я могу получить и установить текущую позицию прокрутки веб-страницы?
У меня есть длинная форма, которую нужно обновить на основе действий / ввода пользователя. Когда это происходит, страница сбрасывается до самого верха, что раздражает пользователей, потому что им приходится прокручивать назад до того места, где они находились.
Если бы я мог зафиксировать текущую позицию прокрутки (в скрытом вводе) перед перезагрузкой страницы, я мог бы вернуть ее после перезагрузки.
javascript
html
хуг
источник
источник
Ответы:
Вы ищете
document.documentElement.scrollTop
недвижимость.источник
getScrollingPosition()
чтобы хранить значения в скрытых переменных. Затем в html обновленной странице, которую я использую<body onLoad="window.scrollTo(x,y)
, где x и y - это значения из скрытых значений!document.documentElement.scrollTop
всегда возвращает 0.document.body.scrollTop
Однако, похоже, работает. С другой стороны, у одного Firefox на Ubuntu все наоборот - вы получаете 0 сbody
и правильное количество сdocumentElement
. Есть идеи, что это дает?scrollTop
свойство работает не во всех браузерах. Проверьтеwindow.pageXOffset
иwindow.pageYOffset
для лучших результатов.В настоящее время принятый ответ неверен -
document.documentElement.scrollTop
всегда возвращает 0 в Chrome. Это связано с тем, что WebKit используетbody
для отслеживания прокрутки, тогда как Firefox и IE используютhtml
.Чтобы получить текущую позицию, вам нужно:
Вы можете установить текущую позицию на 1000 пикселей вниз по странице следующим образом:
Или, используя jQuery (оживите его, пока вы в нем!):
источник
window.pageYOffset
более чище, если вы используете методыwindow.scrollBy()
илиwindow.scrollTo()
.Существуют некоторые несоответствия в том, как браузеры предоставляют текущие координаты прокрутки окна. Google Chrome на Mac и iOS, кажется, всегда возвращается
0
при использованииdocument.documentElement.scrollTop
или jQuery$(window).scrollTop()
.Однако он работает стабильно с:
источник
Я выбрал решение для локального хранилища HTML5 ... Все мои ссылки вызывают функцию, которая устанавливает это перед изменением window.location:
и каждая страница имеет это в onLoad тела:
источник