2009-04-27 26 views
5

¿Cómo puedo en jQuery probar cuando una función de Javascript está completamente cargada? Me gustaría usar un gif, que muestra carga, mientras se carga la función javascript, y ocultarlo cuando la función está completamente cargada.Espere hasta que se cargue la función

+1

Consulte una pregunta similar que muestra un gif animado mientras ejecuta una función: http://stackoverflow.com/questions/210821/how-can-i-give-control-back-briefly-to-the-browser-during-intensive -javascript –

+0

¿Quiere decir "cargado" como en "cuando la función se ha descargado", o más como "cuando la función ha completado la ejecución"? – nickf

Respuesta

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

¿No sería mejor un bucle aquí que la recursión? Por supuesto, no debería tomar demasiado tiempo descargar la secuencia de comandos, pero si hay un error de red la pila se desbordará y el rendimiento disminuirá o el navegador se bloqueará. –

+2

No hay recursividad en el código que publiqué. –

+2

Esto es tanto un bucle como una recursión. Es un bucle condicional (no un 'for' o' while'), y se está llamando a sí mismo, por lo que es recursivo. El hecho de que haya un retraso no lo hace menos recursivo y toda recursión tiene una condición de detención; de lo contrario, habría un ciclo infinito. – vol7ron

1

Simplemente intégrese después de definir la función. Las instrucciones posteriores a la definición de la función solo se ejecutarán después de que el texto fuente anterior sea leído (y así ejecutado).

+0

eso no es lo que se preguntó, usted está asumiendo que no está cargando dinámicamente una secuencia de comandos a través de $ .getScript –

1

no estoy seguro de lo que entendemos por carga, pero el siguiente debe aplicarse de todos modos:

  1. Al iniciar cargar el código JavaScript, mostrar el GIF
  2. En el código se carga, agregar una declaración para ocultar el GIF al final

Esto debería resolver su problema de una manera "simple" sin tener que utilizar temporizadores, etc.

Cuestiones relacionadas