javascript scrolltop strict-mode

javascript - ¿Por qué está obsoleto body.scrollTop?



strict-mode (3)

El comportamiento incorrecto de Chrome está en desuso, y advierten a los autores que dejen de confiar en él.

La ventana de desplazamiento está representada por document.documentElement ( <html> ) en modo estándar o <body> en modo peculiar . (El modo Quirks emula la representación de documentos de Navigator 4 y Explorer 5.)

Chrome utiliza body.scrollTop para representar la posición de desplazamiento de la ventana body.scrollTop en ambos modos, lo cual es incorrecto. Parece que quieren arreglar esto, por lo que están alentando a los autores a escribir para el comportamiento estándar.

No creo que necesites cambiar tu código. No hay nada de malo en usar body.scrollTop en el modo estándar, siempre y cuando entiendas que representa la posición de desplazamiento del body solamente (normalmente 0 , a menos que hayas dado un cuadro de desplazamiento al body ).

Puede ver la advertencia ejecutando document.body.scrollTop en la consola:

body.scrollTop está en desuso en modo estricto. Utilice documentElement.scrollTop si está en modo estricto y body.scrollTop solo si está en el modo peculiar.

Parece que body.scrollTop (y body.scrollLeft ) están en desuso en ES5 strict-mode. ¿Cuál es la razón de esto, dado que todavía parece correcto usar estas propiedades en otros DOMElement s?

Información de fondo:

Tengo una función que intenta aumentar (o disminuir, como se especifica) los valores scrollTop de todos los antepasados ​​de un element , hasta que uno de estos cambios realmente. Me pregunto si, para mantener la queja con el modo estricto, debería verificar específicamente contra el elemento del body medida que la cadena de padres se mueve hacia arriba.

[Obviamente, body refiere a document.body ]


Noté que mi código dejaba de funcionar en las nuevas versiones de Chrome. Lo arreglé utilizando window.scrollY

Antes de:

var scrollTop = document.body.scrollTop;

Ahora:

var scrollTop = window.scrollY;

Funciona todo el tiempo ahora. Puede encontrar más documentación here .

Además, estaba usando:

document.body.scrollTop = 0;

ahora lo reemplacé con:

window.scrollTo(0, 0);


scrollTop se refiere a cuánto se desplaza el elemento. Esto significa que el cuerpo no debe tener un scrollTop porque nunca se desplaza, el cuerpo tiene la barra de desplazamiento superior, por lo que su contenido se puede desplazar pero no el cuerpo en sí.
La última imagen en esta página explica mucho:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop