Lorsque vous essayez de savoir combien une page Web a été défilée du haut, laquelle de celles-ci devrait-on utiliser:
document.body.scrollTop
,
document.documentElement.scrollTop
,
window.pageYOffset
,
window.scrollY
Lequel (s) devrais-je choisir dans ces 2 scénarios distincts:
a) Si je voulais une compatibilité maximale (entre les principaux navigateurs utilisés actuellement)?
b) Si je voulais un code qui soit le plus conforme aux normes/à l'épreuve du temps/compatible avec le mode strict (mais qui ne se souciait pas de la prise en charge de navigateurs anciens/non standard)?
J'en utilise trois dans la source skrollr
return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
a) Jusqu'à présent, cela fonctionne sur tous les navigateurs (personne ne s'est plaint au cours de la dernière année).
b) Puisqu'il utilisera le premier qui est défini, je suppose que c'est assez à l'épreuve du temps et stable.
Si vous avez envie, vous pouvez aussi le faire
Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop)
Pour Prinzhorn répondez:
Puisque body
et documentElement
est undefined
dans Chrome/Firefox, mieux utiliser:
return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
Je me suis testé.
Étant donné que skrollr n'utilise pas window.scrollY
, cela était peut-être évident, mais comme autre réponse à la question initiale: window.pageYOffset
est un alias pour window.scrollY
. Voir Window.scrollY .