web-dev-qa-db-fra.com

$ (fenêtre) .scrollTop () vs $ (document) .scrollTop ()

Quelle est la différence entre:

$(window).scrollTop()

et

$(document).scrollTop()

Merci.

177
frenchie

Ils vont tous les deux avoir le même effet.

Cependant, comme indiqué dans les commentaires: $(window).scrollTop() est pris en charge par plus de navigateurs Web que $('html').scrollTop().

141
Bodman

Tout d'abord, vous devez comprendre la différence entre fenêtre et document. L'objet window est un objet client de niveau supérieur. Il n'y a rien au-dessus de l'objet window. Javascript est un langage orienté objet. Vous commencez avec un objet et appliquez des méthodes à ses propriétés ou aux propriétés de ses groupes d'objets. Par exemple, l'objet document est un objet de l'objet window. Pour changer la couleur d'arrière-plan du document, définissez la propriété bgcolor du document.

window.document.bgcolor = "red" 

Pour répondre à votre question, il n'y a pas de différence dans le résultat final entre window et le document scrollTop. Les deux donneront le même résultat.

Consultez l'exemple de travail sur http://jsfiddle.net/7VRvj/6/

En général, utilisez document principalement pour enregistrer des événements et utilisez window pour effectuer des opérations telles que scroll, scrollTop et redimensionnement.

34
Hussein

La manière la plus simple de le faire est de

var top = ($(window).scrollTop() || $("body").scrollTop());
5
amachree tamunoemi

Je viens d'avoir quelques problèmes similaires avec scrollTop décrits ici.

En fin de compte, j'ai contourné ceci sur Firefox et C'EST-À-DIRE en utilisant le sélecteur $('*').scrollTop(0);

Pas parfait si vous avez des éléments que vous ne souhaitez pas affecter, mais qui évitent les disparités entre Document, Body, HTML et Window. Si ça aide ...

0
Tapiochre