2013-06-04 4 views
10

私のAJAXリクエストが進行中に実行され、スクリプトが応答を処理したら停止するアニメーションGIFを表示します。GIFアニメーションは、すべてのメインストリームブラウザでjavascriptと同じスレッドで実行されますか?

これは動作しますが、私は、要求からの応答がアニメーションフリーズ(DOMのいくつかはかなり重いの更新が含まれている)私のスクリプトで処理されている間ことに気づきます。ブラウザが真にシングルスレッドであること -

私の研究は、GIFのアニメーションではJavaScriptが実行されているのと同じスレッド上で発生したためであると信じて私をリードしています。これは現在のメインストリームブラウザ(Chrome、Firefox、Safari、IEなど)の正しい解釈ですか?

第2に、なぜこのように行われますか?ブラウザがGIFアニメーションに専用のスレッドを割り当てて、JavaScriptのブロックが実行されているときにフリーズしないようにすることは本当に不可能ですか?

更新

Thisは興味深いページです。純粋なCSS3アニメーションを使用する方法について説明します。彼らはまだFirefoxでフリーズします - おそらく間もなくFFがこれを修正します。 GIFを使用するのではなく、アニメーション用にCSSを検討する必要があるようです。

+0

これはチェックすることは容易ではないでしょうか? Webインスペクタを引き上げ、ブレークポイントを設定します。私の推測はノーですが、もし実際にそうであれば、人々にGIFの使用をやめるよう説得する助けになるかもしれません。 –

+0

いいえ、ブレークポイントを設定すると、アニメーションGIFが実行されなくなります。ですから、アニメーション化されたGIFに代わるものは何ですか? –

+0

GIFの恐ろしい品質の安定性にもマッチするクライアントソフトウェアで広くサポートされているフォーマットはないと思われますが、GIFフォーマット自体それをレンダリングするソフトウェア)はひどく時代遅れです。 GIFは集合的に私たちにたくさんのギガワットを奪いました。そしてまた、モバイルデバイスの多くの人々に知られていない –

答えて

1

私はproblmeはあなたがDOMを更新するときに、ブラウザがページを再描画しないこと(私見)ですので、画像のフリーズとします。

は変更DOMなしに重いことを行うようにしてください、GIFアニメーション化すべきである(あなたのCPUがビジーでゆっくり場合)が、凍結しません。

それはとにかくあなたを凍結した場合は、明示的に(webworkerを使用して)その仕事のための新しいスレッドを作成することもできますが、私は右覚えていれば、あなたはDOMがwebworkerを形成変更できませんでした。

1

これはおそらく現在よく知られていますが、CSS3は最新のブラウザでは独自のスレッドを持っています。あなたは、JavaScriptでブレークポイントを設定することができるはずですが、あなたのCSSアニメーションが実行されているのを見てください。純粋なCSSでスプライトをアニメーション化する方法を確認するには、このリンクをチェックアウト:

http://blog.teamtreehouse.com/css-sprite-sheet-animations-steps

関連する問題