2010-04-26 10 views
57

Sto visualizzando il valore di document.body.scrollTop nella barra di stato mentre si sposta il mouse. Il valore è sempre 0 in IE. Perché è sempre 0? C'è un altro modo per ottenere quanto la barra di scorrimento è stata spostata?document.body.scrollTop è sempre 0 in IE anche quando si scorre

+0

Cosa DOCTYPE stai usando? –

+3

Ho aumentato la risposta selezionata poiché nessun altro sembrava averlo fatto (a meno che non ci fosse un downvote per contrastarlo). Sarebbe stato bello se tu avessi risposto alla domanda di Nick. –

risposta

107

Si consiglia di provare questo per un doctype più anziano in IE:

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

Non sarebbe bomba se 'documento.documentElement' non è definito? Penso che tu intendessi 'document.documentElement' invece di' document.documentElement.scrollTop' nella prima parte dell'espressione ternaria. :) –

+0

@Vivin - Non è indefinito, la proprietà scroll non è impostata, risultando in 0/false. –

+2

Questo può essere abbreviato in 'var top = document.documentElement.scrollTop || document.body.scrollTop; ' –

10

A seconda del DOCTYPE, è necessario utilizzare document.body.scrollTop o document.documentElement.scrollTop. Hai provato il secondo?

Si può fare qualcosa di simile:

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

mi sono imbattuto in questi collegamenti, mentre la ricerca il problema:

Questo potrebbe aiutarti un po 'di più.

15

questa funzione fornisce un'implementazione cross-browser di leggere l'offset di scorrimento:

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

Grazie, questa è l'unica risposta che funziona in entrambe le versioni precedenti di IE come ultima versione di Chrome. – Kamelkent

Problemi correlati