Como obter e definir a posição actual da página web?

Como posso obter e definir a posição actual do pergaminho da página web?

Tenho um formulário longo que precisa de ser actualizado com base nas acções/entradas do utilizador. Quando isso acontece, a página se reinicia para o topo, o que é irritante para os usuários, porque eles têm que se deslocar de volta para o ponto em que estavam.

Se eu conseguisse capturar a posição actual do pergaminho (numa entrada escondida) antes de a página voltar a carregar, poderia então voltar a configurá-la depois de carregar novamente.

Author: Shadow Wizard, 2010-11-04

4 answers

Estás à procura da propriedade.
 65
Author: SLaks, 2010-11-04 12:59:20

A resposta actualmente aceite está incorrecta - {[3] } devolve sempre 0 no cromo. Isto porque o WebKit usa body para controlar a rolagem, enquanto o Firefox e IE usam html.

Para obter a posição actual, você quer:

document.documentElement.scrollTop || document.body.scrollTop

Você pode definir a posição actual para 1000px para baixo na página Assim:

document.documentElement.scrollTop = document.body.scrollTop = 1000;
Ou usando jQuery.):
$("html, body").animate({ scrollTop: "1000px" });
 100
Author: tobek, 2015-02-12 21:42:58

Existem algumas inconsistências na forma como os navegadores expõem as coordenadas de deslocamento da janela actual. Google Chrome em Mac e iOS parece sempre voltar 0 ao utilizar document.documentElement.scrollTop ou jQuery $(window).scrollTop().

No entanto, funciona de forma consistente com:

// horizontal scrolling amount
window.pageXOffset

// vertical scrolling amount
window.pageYOffset
 17
Author: gyo, 2018-04-06 23:15:38
Escolhi a solução de armazenamento local HTML5... Todos os meus links chamam uma função que define isso antes de mudar a janela.localização:
localStorage.topper = document.body.scrollTop;
E cada página tem isto no corpo.
  if(localStorage.topper > 0){ 
    window.scrollTo(0,localStorage.topper);
  }
 5
Author: AXE-Labs, 2013-03-17 06:26:32