Réponses:
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().
scrollTopne défile nulle part, mais renvoie simplement l'emplacement de défilement actuel.
scrollTop()est un getter et scrollTop(value)un setter. scrollTop()sans arguments ne modifie pas la position de défilement.
Tout d'abord, vous devez comprendre la différence entre windowet document. L' windowobjet est un objet côté client de niveau supérieur. Il n'y a rien au-dessus de l' windowobjet. 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' documentobjet est un objet de l' windowobjet. Pour changer la document« couleur d'arrière - plan, vous souhaitez définir le document» s bgcolorpropriété.
window.document.bgcolor = "red"
Pour répondre à votre question, il n'y a aucune différence dans le résultat final entre windowet document scrollTop. Les deux donneront le même résultat.
En usage général documentprincipalement pour enregistrer les événements et utiliser windowpour faire des choses comme scroll, scrollTopet resize.
Pour ce faire, utilisez plusieurs navigateurs
var top = ($(window).scrollTop() || $("body").scrollTop());
$("body").scrollTop()renvoyez toujours 0 dans Google Chrome.
$("body").scrollTop()est obsolète, ne fonctionne plus sur Chrome ou FF . Il reviendra 0
J'ai juste eu quelques-uns des problèmes similaires avec scrollTop décrits ici.
En fin de compte, j'ai contourné cela sur Firefox et IE en utilisant le sélecteur$('*').scrollTop(0);
Pas parfait si vous avez des éléments que vous ne voulez pas appliquer, mais cela contourne la disparité entre les documents, le corps, le HTML et la fenêtre. Si ça aide ...
$("html,body").scrollTop(val)- jamais eu de problèmes