vanilla top funcion javascript cross-browser scrolltop strict-mode

javascript - funcion - body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY



scrolltop object jquery (3)

Dado que skrollr no usa window.scrollY , esto puede haber sido obvio, pero como respuesta adicional a la pregunta original: window.pageYOffset es un alias para window.scrollY . Ver Window.scrollY .

Al tratar de averiguar cuánto se ha desplazado desde la parte superior de una página web, ¿cuál de ellas se debería usar?

document.body.scrollTop ,

document.documentElement.scrollTop ,

window.pagYOffset ,

window.scrollY

¿Cuál elegiría en estos 2 escenarios separados?

a) Si quería la máxima compatibilidad (en los principales navegadores utilizados actualmente)

b) Si quería código que fuera compatible con la mayoría de las normas / a prueba de futuro / compatible con modo estricto (¿pero no me interesaba apoyar navegadores antiguos / no estándares)?


Estoy usando tres de ellos en la fuente skrollr

return window.pageYOffset || documentElement.scrollTop || body.scrollTop || 0;

https://github.com/Prinzhorn/skrollr/blob/b98d40820b9864be275e81af382045d72cc5a08a/src/skrollr.js#L627

a) Hasta el momento funciona en todos los navegadores (nadie ha presentado quejas en el último año).

b) Ya que usará el primero que se define, creo que es bastante a prueba de futuro y estable.

Si eres elegante, podrías hacer esto también

Math.max(window.pageYOffset, documentElement.scrollTop, body.scrollTop)


Para la respuesta de Prinzhorn :

Como body y documentElement undefined están undefined en Chrome / Firefox, mejor uso:

return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

Probé yo mismo.