232 votes

JavaScript get fenêtre X / Y position Scroll

Je suis l'espoir de trouver un moyen d'obtenir la position de fenêtres (par rapport au nombre total de page largeur/hauteur) pour que je puisse l'utiliser pour forcer un défilement d'une section à l'autre. Cependant, il semble y avoir une énorme quantité d'options quand il s'agit de deviner quel est l'objet qui détient le vrai X/Y pour votre navigateur.

Laquelle de ces ai-je besoin pour vous assurer IE 6+, FF 2+ et google Chrome/Safari de travail?

window.innerWidth
window.innerHeight
window.pageXOffset
window.pageYOffset
document.documentElement.clientWidth
document.documentElement.clientHeight
document.documentElement.scrollLeft
document.documentElement.scrollTop
document.body.clientWidth
document.body.clientHeight
document.body.scrollLeft
document.body.scrollTop

Et existe-il des autres? Une fois, je sais où la fenêtre est que je peux définir un événement de la chaîne qui va lentement appel window.scrollBy(x,y); jusqu'à ce qu'il atteigne ce point.

303voto

thomasrutter Points 42905

La méthode jQuery (v1.10) pour trouver c'est:

var doc = document.documentElement;
var left = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);
var top = (window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0);

C'est:

  • Il teste window.pageXOffset première et l'utilise que si elle existe.
  • Sinon, il utilise document.documentElement.scrollLeft.
  • Il soustrait ensuite document.documentElement.clientLeft si elle existe.

La soustraction de la document.documentElement.clientLeft / Top seulement semble être nécessaire pour corriger les situations où vous avez appliqué une bordure (pas de remplissage ou de la marge, mais la frontière réelle) de l'élément racine, et que, peut-être seulement dans certains navigateurs.

226voto

Qeremy Points 3719

Peut-être plus simple ; (mii.dom.js : https://github.com/qeremy/mii/blob/master/mii.dom.js#L426 )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X