Pourquoi est-corps.scrollTop déprécié?
il semble body.scrollTop
(et body.scrollLeft
) sont dépréciés en mode ES5 strict. Quelle est la raison de ceci, étant donné qu'il semble encore correct d'utiliser ces propriétés sur d'autres DOMElement
s?
Information:
j'ai une fonction qui tente d'augmenter (ou de diminuer, comme spécifié)scrollTop
les valeurs de tous les ancêtres d'une element
, jusqu'à ce que l'un de ces change réellement. Je me demande si, pour rester plainte avec le mode strict, je devrais vérifier spécifiquement contre le body
élément que la chaîne des parents se déplace vers le haut.
[Évidemment, body
renvoie document.body
]
3 réponses
C'est le propre comportement incorrect de Chrome qui est déprécié, et ils avertissent les auteurs d'arrêter de s'y fier.
le viewport défilant est représenté par document.documentElement
(<html>
) en mode standard ou <body>
en mode quirks. ( Quirks mode émule le rendu de document de Navigator 4 et Explorer 5.)
Chrome utilise body.scrollTop
pour représenter la fenêtre d'affichage de la position de défilement dans modes, ce qui est faux. Il sonne comme ils veulent le résoudre cette ils encouragent donc les auteurs à écrire un 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 aussi longtemps que vous comprenez qu'il représente la position de défilement body
seulement (généralement 0
, sauf si vous avez donné body
une zone de défilement.
Vous pouvez voir l'avertissement en exécutant document.body.scrollTop
dans la console:
body.scrollTop
est déprécié en mode strict. Veuillez utiliserdocumentElement.scrollTop
si en mode strict etbody.scrollTop
seulement si en mode excentrique.
j'ai remarqué que mon code ne fonctionnait plus sur les nouvelles versions de Chrome. Je l'ai fixée à l'aide de window.scrollY
Avant:
var scrollTop = document.body.scrollTop;
Maintenant:
var scrollTop = window.scrollY;
ça marche tout le temps maintenant. Vous pouvez trouver plus de documentation ici.
J'utilisais aussi:
document.body.scrollTop = 0;
maintenant, je l'ai remplacé par:
window.scrollTo(0, 0);
scrollTop se réfère à la quantité de l'élément qui est déroulé. Cela signifie que le corps ne devrait pas avoir un scrollTop parce qu'il n'est jamais scrolled, le corps a le scrollbar le plus élevé de sorte que son contenu peut être scrolled, mais pas le corps lui-même.
La dernière image sur cette page explique un lot:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop