$ (ventana) .scrollTop () vs. $ (documento) .scrollTop ()


Respuestas:


149

Ambos van a tener el mismo efecto .

Sin embargo, como se señaló en los comentarios: $(window).scrollTop()es compatible con más navegadores web que $('html').scrollTop().


3
devuelve 0 en IE8 (aunque mi página está en modo caprichos, lo que puede jugar un factor)
Greg Ogle

38
$ ('html'). scrollTop () no es un navegador cruzado (como setter no funciona al menos en Chrome). La forma más cruzada de hacerlo por ahora es: $ (window) .scrollTop () como getter, $ ('html, body'). ScrollTop (offset) como setter.
Georgii Ivankin

66
De acuerdo con esta referencia , sin argumentos scrollTopno se desplaza a ningún lado, solo devuelve la ubicación de desplazamiento actual.
O Mapper el

3
@ d2burke scrollTop()es un getter y scrollTop(value)es un setter. scrollTop()sin argumentos no cambia la posición de desplazamiento.

1
@ M98 window.scrollTo (x, y)
Bodman

36

Primero, necesitas entender la diferencia entre windowy document. El windowobjeto es un objeto del lado del cliente de nivel superior. No hay nada encima del windowobjeto. JavaScript es un lenguaje orientado a objetos. Comienza con un objeto y aplica métodos a sus propiedades o las propiedades de sus grupos de objetos. Por ejemplo, el documentobjeto es un objeto del windowobjeto. Para cambiar el documentcolor de fondo de 's, debe establecer la propiedad de document' s bgcolor.

window.document.bgcolor = "red" 

Para responder a su pregunta, no hay diferencia en el resultado final entre windowy document scrollTop. Ambos darán la misma salida.

Consulte el ejemplo de trabajo en http://jsfiddle.net/7VRvj/6/

En el uso general document, principalmente para registrar eventos y utilizar windowpara hacer cosas como scroll, scrollTop, y resize.


No hay diferencia en el resultado final. Ambos darán la misma salida.
Hussein

Aparentemente no, algunos navegadores no admiten el desplazamiento de la ventana ya que el objeto de la ventana puede no ser el objeto que se desborda.
Bodman

11
Qué navegador no admite ventana, sea específico. Aquí hay un ejemplo de jsfiddle.net/7VRvj/4 . Verifíquelo en todos los navegadores y avíseme en qué navegador no funciona.
Hussein


0

Acabo de tener algunos de los problemas similares scrollTopdescritos aquí.

Al final, resolví esto en Firefox e IE usando el selector$('*').scrollTop(0);

No es perfecto si tiene elementos que no desea efectuar pero evita la disparidad de documento, cuerpo, HTML y ventana. Si ayuda ...


20
Nunca debe usar * de esta manera (de hecho, evite * por completo). En lugar de apuntar a un elemento, estás afectando a todo el DOM. Enorme golpe de rendimiento. Los selectores deben ser lo más precisos posible.
Vlad

2
Yo personalmente siempre he usado $("html,body").scrollTop(val), nunca tuve ningún problema
Roi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.