Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Вы ищете свойство document.documentElement.scrollTop.

Ответ 2

Текущий принятый ответ неверен - 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" });

Ответ 3

Google Chrome на Mac и iOS, кажется, всегда возвращают 0 при использовании document.documentElement.scrollTop или jQuery $(window).scrollTop().

Однако он работает правильно:

window.pageXOffset для горизонтального положения

window.pageYOffset для вертикального положения

Ответ 4

Я пошел с локальным решением хранения HTML5... Все мои ссылки вызывают функцию, которая устанавливает это перед изменением window.location:

localStorage.topper = document.body.scrollTop;

и каждая страница имеет это в теле onLoad:

  if(localStorage.topper > 0){ 
    window.scrollTo(0,localStorage.topper);
  }