Carga dinámica de Javascript

Publicado el 02 agosto 2013 por Marcostrfn @bajolinux

Cada día son mas los usos que damos a javascript. Uno de los problemas que puedes encontrar en ver tu página saturada de script que hacen mas lenta su carga. Por ello, la carga dinámica de javascript puede darte uno poco de tiempo extra a la hora de mostrar tu página.

Hay algunas herramientas que te ayudaran a saber el tiempo en que carga tu web. Pero si dispones de script pesados que puede que no se usen a menos que se ejecute una acción determinada, cargarlos solo cuando sean necesarios puede ayudarte a aumentar la velocidad.

Puedes usar una función parecida a la siguiente para realizar la carga dinámica de javascript.

  1. var cargaScript = function  (url, callback){
  2.   // Comprobamos si el script existe.
  3.   var allScript = document.getElementsByTagName("script");
  4.   for (i=0; i<allScript.length; i++) {
  5.   var newScript = document.createElement("script");
  6.   newScript.type = "text/javascript";
  7.   newScript.src = url;
  8.   // si existe ejecutamos la función y nos vamos.
  9.   if ( newScript.src == allScript[i].src ) {
  10.   callback();
  11.   return;
  12.   }  
  13.   }
  14.   var script = document.createElement("script")
  15.   script.type = "text/javascript";
  16.   // para IE que va a su bola.
  17.   if (script.readyState){  
  18.   script.onreadystatechange = function(){
  19.   if (script.readyState == "loaded" || script.readyState == "complete"){
  20.   script.onreadystatechange = null;
  21.   callback();
  22.   }
  23.   };
  24.   // para el resto de navegadores.
  25.   } else {  
  26.   script.onload = function(){
  27.   callback();
  28.   };
  29.   }
  30.   script.src = url;
  31.   document.getElementsByTagName("head")[0].appendChild(script);
  32. }

Para cargar un script determinado basta con llamar a esta función y a modo de callback el nombre de la función que queremos ejecutar:

  1. cargaScript('js/cargar.js', function() { holaMundo(m) });

Para comprobar la carga dinámica del script puedes usar Google Chrome y en su depurador controlar la pestaña Network.

Observa como el script “cargar.js” solo se carga al pulsar el enlace de la demo.

Carga dinámica de Javascript publicado en BajoLinux.