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.

15 Comentarios para “Include en Javascript”

« Antiguos
Nuevos »
  1. Matias

    Muy buen trabajo, sobre todos para aquellos proyectos que en los que no se pueda trabajar sobre script de servidor o en los que se necesite incluir variables dinámicas a traves de php pero no se quiera hacer pasar todo el javascript a través del motor de PHP (ahorrando mucho tiempo de proceso).

    Matias

  2. Angel

    Hola, felicitaciones por dicho js, ere sun maestor del javascript. Tengo una duda, resulta que al usar esta nueva librería con la demo de la anterior me da un fallo, ya que al darle al insertar el nuevo javascript me borra todo el javascript anterior¿alguna solución?:

    dejo el codigo:

    Demo

    Presione para cargar el archivo JS

    al darle click queda así:

    1alert(”Se cargo el archivo correctamente”);

    ¿alguna solución? un saludo

  3. Angel

    Hola, muy buen trabajo el que hiciste, quisiera preguntarte el sisiguente problema:
    he utulizado la demo de la anterior libreria, me carga el js enviado pero me elimina todo lo anterior, es decir, en el head solo queda el script nuevo y no el js include ¿alguna solución? un saludo

  4. Funciones de PHP en Javascript, PHP.JS

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

  5. cbalcazar82

    Hola, he probado tu función pero aun no consigo cargar con el include archivos .php ; es esta forma correcta de hacerlo?
    ***************************************************************************************

    function verify(ver){
    if(ver){
    // Confirmed message, i.e. clicked on “Yes”
    include(”borrar_cliente.php”,{type:php,dom:true,cache:false});
    }
    }

    ***************************************************************************************
    en “borrar_cliente.php” solo hace un llamado a la tabla m_cliente y borra el cliente.

    una consulta mas si no es mucho pedir; en tu funcion puedo hacer paso de variables?

    include(”borrar_cliente.php?id_cliente=203″,{type:php,dom:true,cache:false});

    o se debe hacer de otra manera?

    gracias.

Leave a Reply

Comment moderation is enabled. Your comment may take some time to appear.

Tu banner aquí

Recibir Artículos Por Email