Comment puis-je obtenir et définir la position de défilement de la page Web actuelle?
J'ai un formulaire long qui doit être actualisé en fonction des actions / entrées de l'utilisateur. Lorsque cela se produit, la page revient tout en haut, ce qui est ennuyeux pour les utilisateurs, car ils doivent faire défiler vers le bas jusqu'au point où ils se trouvaient.
Si je pouvais capturer la position de défilement actuelle (dans une entrée masquée) avant le rechargement de la page, je pourrais la remettre en place après son rechargement.
javascript
html
xyz
la source
la source
Réponses:
Vous recherchez la
document.documentElement.scrollTop
propriété.la source
getScrollingPosition()
pour stocker les valeurs dans des variables cachées. Puis dans le html de la page rafraîchie que j'utilise<body onLoad="window.scrollTo(x,y)
, où x et y sont ceux des valeurs des valeurs cachées!document.documentElement.scrollTop
renvoie toujours 0.document.body.scrollTop
, cependant, semble fonctionner. Un Firefox sur Ubuntu, en revanche, l'inverse est vrai: vous obtenez 0 avecbody
et le montant correct avecdocumentElement
. Une idée de ce qui donne?scrollTop
propriété ne fonctionne pas sur tous les navigateurs. Vérifiezwindow.pageXOffset
etwindow.pageYOffset
pour de meilleurs résultats.La réponse actuellement acceptée est incorrecte -
document.documentElement.scrollTop
renvoie toujours 0 sur Chrome. En effet, WebKit utilisebody
pour garder une trace du défilement, alors que Firefox et IE l'utilisenthtml
.Pour obtenir la position actuelle, vous voulez:
Vous pouvez définir la position actuelle sur 1000 pixels en bas de la page comme suit:
Ou, en utilisant jQuery (animez-le pendant que vous y êtes!):
la source
window.pageYOffset
est plus propre si vous utilisez des méthodeswindow.scrollBy()
ouwindow.scrollTo()
.Il existe certaines incohérences dans la façon dont les navigateurs exposent les coordonnées de défilement de la fenêtre actuelle. Google Chrome sur Mac et iOS semble toujours revenir
0
lors de l'utilisation dedocument.documentElement.scrollTop
jQuery$(window).scrollTop()
.Cependant, cela fonctionne de manière cohérente avec:
la source
Je suis allé avec la solution de stockage local HTML5 ... Tous mes liens appellent une fonction qui définit ceci avant de changer window.location:
et chaque page a ceci dans le onLoad du corps:
la source