web-dev-qa-db-ja.com

scrollTop()はFirefoxでは0を返しますが、Chrome

これに関して別の質問があるかどうかわからない場合は、謝罪し、猟犬を解放しないでください。

Html5 doctypeを使用し、scrollTop()の値を通知するスクロールリスナーからクイックconsole.logを実行します。基本的にこれを行っているので、ポイントを超えてスクロールすると、要素の不透明度が変更されます。私はMVSソリューションを使用してこれを行っていますが、これを外部サイトにプッシュして、表示できるようにすることはできません。ここに簡単なスニペットがあります:

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

Chromeでスクロールすると、console.log(scrollTop);が表示されます。必要なもの(つまり、スクロールごとに100)を表示し、200 scrollTopを押すと不透明度が消えます。 FFとIE7 +でスクロールすると、varはスクロールごとに「0」を返します。 $( 'body')。scrollTop()を$( 'document')。scrollTop();に変更すると、その後、スクロールすると「null」の戻り値が表示されます。

何か案は?ありがとう!

32
lxndr

var scrollTop = $(document).scrollTop();を使用してみてください

41
jovobe

$(window).scrollTop()は、FirefoxとChromeの両方で期待どおりに動作します。

確認のため、次のjsfiddleをchromeとfirefoxの両方で実行します: http://jsfiddle.net/RBBw5/6/

17
Andrejs Kuzmins

互換モードでIE9に不満を感じた後、$('body').scrollTop()がIE9、Chrome 32およびFirefox 26)で確実に機能することがわかりました。

1
Boaz

Var scrollTop = $('html').scrollTop();を使用してFireFoxで動作します

ただし、ブラウザーをスニッフィングする必要があります(機能は検出されますが、スニッフィングはできませんが、検出できません)。Chromeでは機能しないため、こちらを試してください。

ブラウザ検出jQuery 1.9の最も簡単/最も軽い置換?

0
Matt Robinson