10

Chrome と Safari では$("body").scrollTop(1000)、期待どおりに動作します。

IE と FF では何も起こりません。

IE と FF では$(window).scrollTop(1000)動作しますが、別の場所に移動します。Chrome と Safari でも動作しますが、どちらも別の場所に移動します。最大で 300 ~ 500 ピクセルずれているようです。

クロスブラウザで機能するscrollTopプロパティを設定する一貫した方法はありますか?そうでない場合、なぜjQueryはこれを抽象化しないのですか?

Chrome と Safari では正常に動作しますが、他のブラウザーでは動作しません。

ブラウザ検出を行う唯一のオプションはありますか? (悪い習慣)またはもっと良い方法はありますか?

4

3 に答える 3

11

$(jQuery.browser.webkit ? "body": "html").animate({ scrollTop: myTop }, myDur);

Webkit ブラウザー (Chrome/Safari、Mac と Win の両方) は「body」を使用し、その他 (FF/Opera/IE 7-9) は「html」を使用します。

ブラウザの検出が大好きです。

于 2012-02-09T23:14:38.397 に答える
6

試す

$(document).scrollTop("...");
于 2012-01-28T01:16:58.630 に答える
0

ブラウザによってscrollTopどちらかbodyに適用する必要がありますが、両方に適用しても問題ありません。セット内の最初の要素に適用されますが、すべての要素に適用されるhtmlため、これを行うことができます。.scrollTop().animate()

$('body, html').animate({
  scrollTop: 1000
}, 'fast');

変更をすぐに反映させたい場合は、速度 ( 'fast') をに変更します0。別の方法として、次の構文を使用することもできますが、私は上記の構文の方が好きです。

$('body, html').each(function() { $(this).scrollTop(1000); });
于 2014-09-05T01:22:05.810 に答える