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. UtilicedocumentElement.scrollTop
si está en modo estricto ybody.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