2009-04-27 30 views
5

Come posso eseguire il test jQuery quando una funzione javascript è completamente caricata? Mi piacerebbe usare una gif, che mostra il caricamento, mentre la funzione javascript si carica e la nascondi quando la funzione è completamente caricata?Attendi fino a quando la funzione non viene caricata

+1

Vedi la domanda simile a mostrare una gif animata durante l'esecuzione di una funzione: http://stackoverflow.com/questions/210821/how-can-i-give-control-back-briefly-to-the-browser-during-intensive -javascript –

+0

Vuoi dire "caricato" come in "quando la funzione è stata scaricata", o più come "quando la funzione ha completato l'esecuzione"? – nickf

risposta

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

Non sarebbe un ciclo migliore della ricorsione qui? Certo, non dovrebbe impiegare troppo tempo per scaricare lo script, ma se c'è un errore di rete lo stack overflow e le prestazioni diminuiranno o il browser andrà in crash. –

+2

Non c'è nessuna ricorsione nel codice che ho postato. –

+2

Questo è sia un ciclo che una ricorsione. È un ciclo condizionale (non un 'for' o' while'), e si chiama da solo, quindi è ricorsivo. Solo perché c'è un ritardo, non lo rende meno ricorsivo e tutte le ricorsioni hanno una condizione di arresto, altrimenti ci sarebbe un ciclo infinito. – vol7ron

1

Basta chiamare se stessi dopo aver definito la funzione. Le istruzioni successive alla definizione della funzione verranno eseguite solo dopo aver letto il testo sorgente precedente (e quindi eseguito).

+0

non è quello che è stato chiesto, si presume che non sta caricando in modo dinamico uno script tramite $ .getScript –

1

io non sono sicuro di cosa si intende per carico ma il seguente dovrebbe applicarsi in ogni caso:

  1. Quando si avvia il caricamento del codice JavaScript, visualizzare il GIF
  2. Nel codice si carica, aggiungere un'istruzione per nascondere la GIF alla fine

Questo dovrebbe risolvere il problema in modo "semplice", senza dover utilizzare i timer, ecc

Problemi correlati