2009-04-27 27 views
5

javascript関数が完全にロードされたときにjQueryテストでどのようにテストできますか? javascript関数の読み込み中に読み込みを表示するgifを使いたいのですが、関数が完全に読み込まれたときに非表示にしますか?関数がロードされるまで待つ

+1

同様の質問を参照して、関数の実行中にアニメーションGIFを表示する:http://stackoverflow.com/questions/210821/how-can-i-give-control-back-brieffly-to-the-browser-during-intensive -javascript –

+0

「関数がダウンロードされたとき」のように、あるいは「関数が実行を完了したとき」のように「読み込まれた」という意味ですか? – nickf

答えて

9
$(function(){ 
    $("#loadingGIF").show(); 
    WaitForFunction(); 
}); 

function WaitForFunction() 
{ 
    if (!$.isFunction(FUNCTION_TO_WAIT_ON_HERE)) { 
     setTimeout(WaitForFunction, 100); 
     return; 
    } 
    Function_Loaded(); 
} 

function Function_Loaded(){ 
     $("#loadingGIF").hide(); 
} 
+1

ループはここでの再帰より優れていませんか?確かに、スクリプトをダウンロードするにはあまりにも時間がかかるはずはありませんが、ネットワークエラーがあれば、スタックオーバーフローとパフォーマンスが低下するか、ブラウザがクラッシュします。 –

+2

私が投稿したコードに再帰はありません。 –

+2

これはループと再帰の両方です。これは条件付きのループ( 'for'や' while'ではなく)です。それ自体を呼び出すので、再帰的です。ちょうど遅延があるので、再帰的な再帰的なものではなく、すべての再帰は停止条件を持ちます。そうでなければ、無限ループがあります。 – vol7ron

1

機能を定義した後に自分自身を呼び出してください。関数定義の後のステートメントは、直前のソーステキストが読み込まれた後にのみ実行されます。

+0

これは尋ねられたものではなく、$ .getScriptを使ってスクリプトを動的にロードしていないと仮定しています。 –

1

私はあなたがロードで何を意味するかわからないが、次はとにかく適用する必要があります

  1. あなたがJavaScriptコードのロードを開始するとき、あなたはロードするコードでは、GIF
  2. を表示し、

    など、これはタイマーを使用することなく、「シンプル」な方法であなたの問題を解決する必要があります

終わりにGIFを非表示にするには、ステートメントを追加210

関連する問題