3

この非常に単純な jquery アニメーションが、Chrome などの一部のブラウザーでは完全に機能し、Firefox 7.0.1 ではバグが発生しているように見える理由を知っている人はいますか? アニメーションへのリンクはこちらです。Firefox で試してみると、アニメーションがフリーズしてから再起動することがあります。ご覧のとおり、コードは非常にシンプルで、アニメーションは 1 つだけで、画像はなく、インライン CSS です。

html:

<div id="content" style="position: relative;width: 500px;height: 500px;overflow: hidden;">
    <ul id="slider" style="position: absolute;top:0;left:0;">
        <li style="background-color: red;height: 500px;width: 500px;list-style-type: none;"></li>
        <li style="background-color: green;height: 500px;width: 500px;list-style-type: none;"></li>
        <li style="background-color: blue;height: 500px;width: 500px;list-style-type: none;"></li>
    </ul>
</div>

JS:

$(document).ready(function () {
    to_move=$('#slider');
    to_move.animate({
       top: "-1000px"
    }, 15000,'linear');
});

助けてくれてありがとう。

4

2 に答える 2

2

あなたが見ているのは、Firefox のガベージ コレクターが頻繁に作動していることです。

デイブ・マンデリンのブログ経由:

よく知らない場合の GC の背景: JavaScript プログラムが実行されると、メモリを消費するオブジェクト、配列、文​​字列、および関数が作成されます。すべてのメモリを使い果たしてクラッシュしないようにするために、JS エンジンは、使用されなくなったオブジェクト (つまり、「ガベージ」) を自動的に検出して解放できる必要があります。この「自動メモリ再利用」サブシステムは、ガベージ コレクタまたは GC と呼ばれます。)

一時停止の理由は、SpiderMonkey が昔ながらのストップ ザ ワールド マーク アンド スイープ コレクターを使用しているためです。

Firefox の GC に対する大幅な改善が計画されていますが、まだ実装されていません。詳細については、そのリンクを参照してください。

于 2011-11-22T13:49:48.907 に答える
0

jqueryの内部の仕組みについてはよくわかりませんが、そのdivのサイズ変更イベントを使用していると思います。Firefox はサイズ変更イベントをうまく処理できません。それを修正する方法があるかどうかはわかりません。ここにいくつかの詳細情報があります: http://www.quirksmode.org/dom/events/resize.html

于 2011-11-22T13:59:00.220 に答える