Include en Javascript

Hace un tiempo ya habia publicado un script que incluia archivos javascript y css mediante el DOM, y ahora debido a un proyecto que realize la simplifique un poco, al fin y al cabo lo que se busca es la simplicidad.

La función es la siguiente:

  1. function include(file,opt){
  2.        
  3.         if(file==“”) return;
  4.  
  5.         //Genera una id para el archivo con el fin de evitar que se cargue 2 veces.
  6.         idfile = file.replace(location.hostname,“”);
  7.         idfile = idfile.replace(location.protocol,“”);
  8.         idfile = idfile.replace(“//”,“”);
  9.  
  10.         if(document.getElementById(idfile)){ return };
  11.                
  12.         if(typeof opt==“undefined”) opt = {};
  13.         if(typeof opt.cache==“undefined”) opt.cache = true;
  14.         if(typeof opt.dom==“undefined”)  opt.dom = false;
  15.         if(typeof opt.type==“undefined”)  opt.type = “”;
  16.        
  17.        
  18.         ext = (opt.type!=“”) ? opt.type : file.substring(file.lastIndexOf(‘.’)+1);
  19.  
  20.         if(!opt.cache){
  21.             var random = new Date().getTime().toString();       
  22.                 if(file.indexOf(“?”)!=-1) file = file+“&”+random;
  23.                 else file = file+“?”+random;
  24.         }
  25.        
  26.         if(opt.dom){
  27.                 var head = document.getElementsByTagName(‘head’).item(0)       
  28.         }
  29.        
  30.        
  31.         switch(ext){
  32.                 case “css”:
  33.                   if(!opt.dom) 
  34.                         document.write(‘<link rel="stylesheet" href="’+file+‘" id="’+idfile+‘" type="text/css"><\/link>’);
  35.                   else{
  36.                     css = document.createElement(‘link’);
  37.                     css.rel  = ’stylesheet’;
  38.                     css.href = file;
  39.                         css.type = ‘text/css’;
  40.                         css.id = idfile;
  41.                         head.appendChild(css);            
  42.                   }               
  43.                 break;
  44.                
  45.                 case “js”:
  46.                  if(!opt.dom){
  47.                         document.write(‘<script type="text/javascript" id="’+idfile+‘" src="’+file+‘"><\/script>’);
  48.                  }
  49.                  else{
  50.                     script = document.createElement(’script’);
  51.                     script.src = file;
  52.                         script.type = ‘text/javascript’;
  53.                         script.id = idfile;
  54.                         head.appendChild(script);
  55.                        
  56.                         if(typeof opt.oncomplete!=“undefined”){
  57.                                 //Para IE
  58.                             script.onreadystatechange = function () {if (script.readyState == ‘complete’) {if(typeof opt.oncomplete == “function”) {eval(opt.oncomplete());}}}
  59.                                 //Para Firefox
  60.                             script.onload = function () {if(typeof opt.oncomplete == “function”) {opt.oncomplete();}}
  61.                         }             
  62.                  }
  63.  
  64.                 break;
  65.         }
  66. }

Sintaxis:

include(file [,opt]);

Ej: include(”path/to/archive”);

Parámetros opcionales

  • cache: true | false - Si se especifica false se le añade al final del archivo un numero aleatorio para que no se guarde cache en el navegador
  • dom: true | false - Si se especifica true el archivo se cargará creando un nuevo elemento script o link en el DOM, si es false el archivo se cargará con un document.write
  • type: js | css - este parámetro solo es necesario si el archivo a cargar tiene una extensión diferente a js o css por ej un archivo .php
  • onload: funcion - en el caso de que se cargue un archivo js via DOM es posible especificar una acción al finalizar la carga del archivo.

Su uso es muy sencillo unicamente llamamos a la función pasandole como parametro el archivo que deseamos cambiar. La función include se encargará de identificar si se trata de un archivo JS o CSS y realizará la carga.

La función carga los archivos utilizando el document.write como metodo predeterminado esto es ideal para proyectos en los que puede ir variando los archivos a utilizar.Ejemplo

En ves de esto:

  1. <script src=“/path/to/js.js”></script>
  2. <script src=“/path/to/js.js”></script>
  3. <script src=“/path/to/js.js”></script>
  4. <script src=“/path/to/js.js”></script>
  5. <script src=“/path/to/js.js”></script>
  6. <script src=“/path/to/js.js”></script>

podriamos tener esto:

  1. <src=“/path/to/include.js”></script>
  2. <script src=“/path/to/librerias.js”> </script>

y en librerias.js llamarias a los include

  1. include(“/path/to/archivo1.js”);
  2. include(“/path/to/archivo2.js”);
  3. include(“/path/to/archivo3.css”);

De esta manera ya no tendriamos que modificar nuestro template para ir añadiendo los scripts si no que podemos definir un solo archivo en el cual incluyeramos los scripts.

Si no deseas cargar los archivos entre <head> y</head> puedes especificar que se cargue el archivo mediante DOM.

  1. include(“/path/to/archivo2.js”,{dom:true});

En caso de que el archivo a cargar tenga una extensión diferente a js o css tendremos que especificar el tipo de archivo a cargar ejemplo:

  1. include(“/path/to/archivo2.php”,{type:js,dom:true,cache:false});

Como ven es realmente sencillo el utilizar esta función y para algunos proyectos puede ser algo de mucha utilidad.

Descargar Include.js

¿Te pareció interesante la nota?, registrate a nuestro Feed para que estes al dia con las últimas notas que publicamos en WebAdictos, tambien te invitamos a explorar nuestros archivos tal vez encuentres notas y recursos que te sean de utilidad.

Si lo prefieres puedes utilizar el botón de post aleatorio para ir saltando entre nuestros contenidos.
Gracias por visitarnos.

8 Comentarios para “Include en Javascript”

« Antiguos
Nuevos »
  1. aldeamedia

    Interesante , incluyo un enlace a tu articulo en mi página.

  2. Tutoriales de Photoshop, Illustrator, Ajax, CSS, Javascript

    [...] Include en Javascript [...]

  3. Guillermo

    hola me interesa usar esto, y definitivamente no te quiero faltar el respeto ni mucho menos quiero robar tu trabajo, asi que quiero saber que puedo hacer para usarlo ? … esta bajo alguna licencia ? … o solo será cuestión de darte lso créditos y poner un enlace a esta entrada quizas …

    felicidades por el include que ha quedado de pm y espero tu respuesta :-D ..

    saludos.

  4. dmedina

    Hola Guillermo puedes usarlo sin ningún problema. Lo de los créditos y el enlace no es obligación pero si esta en tus manos hacerlo adelante créeme que te lo agradeceré mucho :)

    Saludos,

  5. Murasame

    Saludos:

    Increible trabajo, personalmente incluyo en el archivo tu nombre, correo para que cualquier persona que vea el código, sepa que eres tu el autor.

Leave a Reply


Tu banner aquí

Recibir Artículos Por Email

 

Entradas Recientes

  • Temas iphone, crealos en iPhone Theme Maker

    Septiembre 7th, 2008 Tienes un iPhone y ya te aburriste del tema que trae??... pues en iPhone Theme Maker podrás crear tus temas iphone de
  • Juegos online, aguas con el muro

    Septiembre 6th, 2008 Se acuerdan de aquellos curiosos concursos japoneses (tetris humano y tetris humano iii) pues TVAzteca sacó su concurs
  • Wallpapers gratis en WallCoo.NET

    Septiembre 6th, 2008 En WallCoo.net encontraras mas de 50,000 wallpapers gratis de alta calidad y de multiples resoluciones incluyendo Wides
  • Proxy Web Hide My Ass!

    Septiembre 6th, 2008 Con un nombre un tanto curioso Hide My Ass! es un proxy gratuito que permite navegar anonimamente en la red por lo que
  • Software linux en TuxSoftware

    Septiembre 6th, 2008 TuxSoftware es un sitio donde podrás encontrar software para linux gratuito dividos en varias categorías como accesor