Il semble body.scrollTop
(et body.scrollLeft
) sont obsolètes en mode strict ES5. Quelle est la raison de cela, étant donné qu'il semble toujours correct d'utiliser ces propriétés sur d'autres DOMElement
s?
Informations de fond:
J'ai une fonction qui essaie d'augmenter (ou de diminuer, comme spécifié) les valeurs scrollTop
de tous les ancêtres d'un element
, jusqu'à ce que l'un de ces changements change réellement. Je me demande si, pour ne pas me plaindre du mode strict, je devrais spécifiquement vérifier par rapport à l'élément body
alors que la chaîne de parents monte.
[Évidemment, body
fait référence à document.body
]
C'est le comportement incorrect de Chrome qui est déconseillé, et ils avertissent les auteurs de ne plus s'y fier.
La fenêtre de défilement est représentée par document.documentElement
(<html>
) en mode standard ou <body>
en mode bizarreries . ( mode Quirks émule le rendu de document de Navigator 4 et Explorer 5.)
Chrome utilise body.scrollTop
pour représenter la position de défilement de la fenêtre d'affichage dans les deux modes , ce qui est incorrect. Cela ressemble à ils veulent résoudre ce problème donc ils encouragent les auteurs à script pour le comportement standard.
Je ne pense pas que vous ayez besoin de changer votre code. Il n'y a rien de mal à utiliser body.scrollTop
en mode standard tant que vous comprenez qu'il représente la position de défilement de body
uniquement (généralement 0
, sauf si vous avez donné à body
une case de défilement).
Vous pouvez voir l'avertissement en exécutant document.body.scrollTop
dans la console:
body.scrollTop
est déconseillé en mode strict. Veuillez utiliserdocumentElement.scrollTop
si en mode strict etbody.scrollTop
uniquement en mode bizarreries.
J'ai remarqué que mon code ne fonctionnait plus sur les nouvelles versions de Chrome. Je l'ai corrigé en utilisant window.scrollY
Avant:
var scrollTop = document.body.scrollTop;
À présent:
var scrollTop = window.scrollY;
Cela fonctionne tout le temps maintenant. Vous pouvez trouver plus de documentation ici .
Aussi, j'utilisais:
document.body.scrollTop = 0;
maintenant je l'ai remplacé par:
window.scrollTo(0, 0);