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 DOMElements?

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, bodyrenvoie document.body]

31
demandé sur Himanshu P 2013-10-28 16:46:17

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 utiliser documentElement.scrollTop si en mode strict et body.scrollTop seulement si en mode excentrique.

37
répondu sam 2017-11-16 19:05:53

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);
4
répondu Adrian 2018-04-06 20:16:42

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

-5
répondu Marvin Brouwer 2013-10-28 12:53:58