$ (finestra) .scrollTop () vs. $ (documento) .scrollTop ()


Risposte:


149

Entrambi avranno lo stesso effetto .

Tuttavia, come sottolineato nei commenti: $(window).scrollTop()è supportato da più browser Web rispetto a $('html').scrollTop().


3
restituisce 0 in IE8 (anche se la mia pagina è in modalità stranezze, il che può avere un ruolo)
Greg Ogle,

38
$ ('html'). scrollTop () non è cross-browser (come setter non funziona almeno in Chrome). Il modo più crossbrowser per farlo per ora è: $ (window) .scrollTop () come getter, $ ('html, body'). ScrollTop (offset) come setter.
Georgii Ivankin, il

6
Secondo questo riferimento , senza argomenti scrollTopnon scorre da nessuna parte, ma restituisce solo la posizione di scorrimento corrente.
OR Mapper

3
@ d2burke scrollTop()è un getter ed scrollTop(value)è un setter. scrollTop()senza argomenti non cambia la posizione di scorrimento.

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

36

Innanzitutto, devi capire la differenza tra windowe document. L' windowoggetto è un oggetto lato client di livello superiore. Non c'è nulla sopra l' windowoggetto. JavaScript è un linguaggio orientato agli oggetti. Si inizia con un oggetto e si applicano metodi alle sue proprietà o alle proprietà dei suoi gruppi di oggetti. Ad esempio, l' documentoggetto è un oggetto windowdell'oggetto. Per cambiare il document'colore di sfondo s, quando si imposta la document' s bgcolorproprietà.

window.document.bgcolor = "red" 

Per rispondere alla tua domanda, non vi è alcuna differenza nel risultato finale tra windowe document scrollTop. Entrambi daranno lo stesso risultato.

Controlla l'esempio funzionante su http://jsfiddle.net/7VRvj/6/

In uso generale documentprincipalmente per registrare gli eventi e utilizzare windowper fare le cose come scroll, scrollTope resize.


Nessuna differenza nel risultato finale. Entrambi daranno lo stesso risultato.
Hussein,

Al momento no, alcuni browser non supportano lo scorrimento della finestra poiché l'oggetto finestra potrebbe non essere l'oggetto che trabocca.
Bodman,

11
Quale browser non supporta la finestra, sii specifico. Ecco un esempio jsfiddle.net/7VRvj/4 . Controllalo in tutti i browser e fammi sapere su quale browser non funziona.
Hussein,


0

Ho appena avuto alcuni dei problemi simili scrollTopdescritti qui.

Alla fine l'ho aggirato su Firefox e IE usando il selettore$('*').scrollTop(0);

Non perfetto se hai elementi che non vuoi applicare ma aggira le disparità di documenti, corpi, HTML e finestre. Se aiuta ...


20
Non dovresti mai usare * in questo modo (in effetti, evita * del tutto). Invece di scegliere come target un elemento, stai interessando l'intero DOM. Enorme successo di prestazioni. I selettori dovrebbero essere il più precisi possibile.
Vlad,

2
Personalmente ho sempre usato $("html,body").scrollTop(val)- mai avuto problemi
Roi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.