2010-04-26 19 views
57

Estoy mostrando el valor de document.body.scrollTop en la barra de estado mientras muevo el mouse. El valor siempre es 0 en IE. ¿Por qué siempre es 0? ¿Hay alguna otra manera de obtener cuánto se movió la barra de desplazamiento?document.body.scrollTop siempre es 0 en IE incluso cuando se está desplazando

+0

Lo DOCTYPE está usando? –

+3

Volví a subir la respuesta seleccionada ya que nadie más parecía haberlo hecho (a menos que hubiera un voto negativo para contrarrestarlo). Hubiera sido bueno si hubieras respondido a la pregunta de Nick. –

Respuesta

107

Es posible que desee probar esto para un tipo de documento más antiguo en el IE:

var top = (document.documentElement && document.documentElement.scrollTop) || 
       document.body.scrollTop; 
+0

¿No sería una bomba si 'document.documentElement' no está definido? Creo que quisiste decir 'document.documentElement' en lugar de' document.documentElement.scrollTop' en la primera parte de la expresión ternaria. :) –

+0

@Vivin - No está indefinido, la propiedad de desplazamiento simplemente no está configurada, lo que da como resultado 0/falso. –

+2

Esto se puede abreviar a 'var top = document.documentElement.scrollTop || document.body.scrollTop; ' –

10

Dependiendo del DOCTYPE, tendría que usar document.body.scrollTop o document.documentElement.scrollTop. ¿Has probado el segundo?

Usted puede hacer algo como esto:

var scrollTop = document.documentElement ? document.documentElement.scrollTop : 
              document.body.scrollTop; 

me encontré con estos enlaces, mientras que la investigación de su problema:

Esto puede ayudarte un poco más.

15

Esta función proporciona una aplicación multi-navegador de la lectura de la compensación de desplazamiento:

function posTop() { 
      return typeof window.pageYOffset != 'undefined' ? window.pageYOffset: document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0; 
     } 
+0

Gracias, esta es la única respuesta que funciona en ambas versiones anteriores de IE como la última versión de Chrome. – Kamelkent

Cuestiones relacionadas