Как получить и установить текущую позицию прокрутки веб-страницы?


Как я могу получить и установить текущую позицию прокрутки веб-страницы?

У меня есть длинная форма, которая должна быть обновлена на основе действий пользователя/ввода. Когда это происходит, страница сбрасывается до самого верха, что раздражает пользователей, потому что им приходится прокручивать вниз до точки, в которой они были.

Если бы я мог захватить текущую позицию прокрутки (в скрытом вводе) до перезагрузки страницы, я мог бы затем установить ее после перезагрузки.

4 80

4 ответа:

Вы ищите document.documentElement.scrollTop собственность.

в настоящее время принятый ответ неверен - 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);
  }