web-dev-qa-db-fra.com

scrollTop () retourne dans Firefox, mais pas dans Chrome

Je ne sais pas s'il y a une autre question à ce sujet. Si c'est le cas, je m'excuse et ne relâchez pas les chiens.

En utilisant le doctype html5 et en faisant un rapide console.log sur mon écouteur de défilement qui me dit la valeur de scrollTop (). En gros, je fais cela alors, lorsque je passe au-delà d'un point, je change l'opacité d'un élément. Je le fais en utilisant une solution MVS et je ne suis pas en mesure de transmettre cette information à un site externe afin que vous puissiez regarder. Voici un extrait rapide:

var opacity = 1;
var scrollTop = $('body').scrollTop();
if (scrollTop > 200) {
   opacity = 0.1;
}
$('#element).css('opacity', opacity);

Si je fais défiler dans Chrome, j'obtiens un fichier console.log (scrollTop); affiche ce que je veux (par exemple, 100 pour chaque parchemin que je fais) et mon opacité disparaît après avoir appuyé sur 200 scrollTop. Si je fais défiler dans FF et IE7 + la variable renvoie "0" à chaque défilement. Si je change $ ('body'). ScrollTop () en $ ('document'). ScrollTop (); alors j'obtiens un retour "nul" au défilement.

Des idées? Merci!

32
lxndr

Essayez d'utiliser var scrollTop = $(document).scrollTop();

41
jovobe

$(window).scrollTop() fonctionne comme prévu dans Firefox et Chrome.

Pour vérification, exécutez jsfiddle dans chrome et firefox: http://jsfiddle.net/RBBw5/6/

17
Andrejs Kuzmins

Après quelques frustrations avec IE9 en mode quirks, j'ai trouvé que $('body').scrollTop() fonctionnait de manière fiable dans IE9, Chrome 32 et Firefox 26.

1
Boaz

Utilisez var scrollTop = $('html').scrollTop(); fonctionne pour FireFox

Vous devrez cependant renifler le navigateur (je sais, détecter les fonctionnalités, pas renifler, mais vous ne pouvez pas le détecter), car cela ne fonctionnera pas dans Chrome, essayez ici: 

Le remplacement le plus facile/le plus léger pour la détection de navigateur jQuery 1.9?

0
Matt Robinson