3

ブラウザー ページでモーダル ダイアログ ボックスを開くと、ページの再描画が停止します。非同期で開始されたスクリプトは、バックグラウンドで中断されることなく実行されます。

この JSfiddle http://jsfiddle.net/YNbux/の動作を説明します。ボックスは、alert()が表示されるとアニメーションを停止し、アラートが閉じられるとアニメーションにジャンプします。

この動作は(少なくとも私のコンピューターでは)次の場所にあります。

  • クローム 21.0.1180.82
  • オペラ 12.01
  • サファリ6.0

したがって、これは意図された動作だと思いますが、アニメーションがジャンプしたり、エンドユーザーには不具合のように見えるその他のことが発生します。では、なぜalert()andconfirm()はページの再描画を停止するのでしょうか?

編集: gif 画像も再描画を停止します: http://jsfiddle.net/YNbux/4/

4

1 に答える 1

3

これらの関数はブロッキング関数です。JavaScript は、返されるまで実行を停止します。

アニメーションとバックグラウンドにないものは、コード呼び出しから完全に分離されていませんalert()。非同期のように見えるコードは、ループ内で実行する必要があり、ループするコード ブロックがある場合、それらは単独では実行されません。これは、コードが適切に動作するために重要です。

于 2012-08-30T16:21:52.330 に答える