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.
4 answers
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" });
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
localStorage.topper = document.body.scrollTop;
E cada página tem isto no corpo.
if(localStorage.topper > 0){
window.scrollTo(0,localStorage.topper);
}