2010-05-13 9 views
9

Quiero cargar un archivo javascript al final de jquery.ready para que el código en mi controlador listo no tenga que esperar hasta que se cargue este gran archivo javascript.cargando el archivo javascript después de jquery.ready

Mi código jquery.ready no se basa en absoluto en este archivo javascript.

¿Sería esta una buena manera de hacerlo?

$(function(){ 
    ... 
    ...  
    $('head').append('<script type="text/javascript" src="/largejs.js"></script>'); 
}); 

Respuesta

22

Uso .getScript: http://api.jquery.com/jQuery.getScript/

$(document).ready(function(){ 
    ... 
    ... 
    $.getScript("largejs.js"); 
}); 
+0

+1 Nunca usé este método, gracias. – xandercoded

+0

Gracias Emil, no sabía esto y ayudó mucho – Peadar

+0

si jquery no está cargado no funcionará –

0

La etiqueta citado "</script>" en realidad va a terminar su bloque de JavaScript antes de tiempo.

que haría uso de este método:

var newScript = $(document.createElement('script')); 
newScript.src="/largejs.js" 
+1

no se olvide de añadir que como un niño de la document.body o un elemento de cabeza. Por cierto, puedes deshacerte de los $ y parens si no estás usando jquery. – rob

0

Si su aplicación es nuevo y no demasiado largo, usted podía obtener una gran cantidad de usando LABjs para ese propósito. Permite que todos los archivos de script se carguen en paralelo o, incluso, en cualquier otro momento que prefiera (a pedido). http://labjs.com/

1

solución comprobará jQuery ya cargado, si no se comprobará después de algún tiempo aquí 500ms y el bucle hasta que se encontró jQuery

function loadScriptAfterJQueryReady(jsFile) { 
    setTimeout(function() { 
     var loadScript=true; 
     if (typeof jQuery == 'undefined') { 
      if (typeof window.jQuery == 'undefined') { 
       /* jQuery is not loaded */ 
       loadScript=false; 
       loadScriptAfterJQueryReady(jsFile); 
      }else{ 
       /* jQuery is loaded */ 
      } 
     } else { 
      /* jQuery is loaded */ 
     } 
     if(true==loadScript) jQuery.getScript(jsFile); 
    }, 500); 
} 
loadScriptAfterJQueryReady("my.js"); 
Cuestiones relacionadas