Inicio > CSS, DESARROLLO > Incluye tus Archivos JS y CSS Cuando los necesites

Incluye tus Archivos JS y CSS Cuando los necesites

Bueno pues no se si a alguno de ustedes les ha surgido el problema de que su sistema esta demasiado cargado al inicio de archivos javascript y css que realmente solo lo utilizan ciertos módulos, pues a mi hace unos meses me surgió ese problema e investigando me puse a trabajar en una libreria que cargara los archivos Javascript mediante el DOM simplemente llamando a un método. La libreria fue basada en este artículo de Sentido Web y en este otro de phpied. El código es el siguiente:

 

 

  1. var ScriptLoader = {

  2. //Método a llamar para cargar el script

  3. loadScript: function(file,opt) {

  4. if(typeof opt!=“object”) opt = {};

  5. if(opt.id==undefined) opt.id = “js_”+file;

  6. id=opt.id;

  7. var head = document.getElementsByTagName(‘head’).item(0)

  8. var scriptTag = document.getElementById(id);

  9. //Si no se quiere cache se genera un número aleatorio

  10. if(opt.cache==false){

  11. var milisegundos = new Date().getTime().toString();

  12. if(file.indexOf(“?”)!=-1) file = file+“&”;

  13. else file = file+“?”;

  14. file = file+milisegundos;

  15. }

  16. if(scriptTag) return;

  17. script = document.createElement(’script’);

  18. script.src = file;

  19. script.type = ‘text/javascript’;

  20. script.id = id;

  21. head.appendChild(script);

  22. //Para IE

  23. script.onreadystatechange = function () {

  24. if (script.readyState == ‘complete’) {

  25. if(typeof opt.oncomplete == “function”) {

  26. opt.oncomplete();

  27. }

  28. }

  29. }

  30. //Para Firefox

  31. script.onload = function () {

  32. if(typeof opt.oncomplete == “function”) {

  33. opt.oncomplete();

  34. }

  35. }

  36. return;

  37. },

  38. unloadScript: function(id){

  39. var head = document.getElementsByTagName(‘head’).item(0)

  40. var scriptTag = document.getElementById(id);

  41. if(scriptTag) head.removeChild(scriptTag);

  42. return;

  43. },

  44. loadCSS:function(file,opt){

  45. if(opt==null) opt = {};

  46. if(opt.id==undefined) opt.id = “css_”+file;

  47. id=opt.id;

  48. var head = document.getElementsByTagName(‘head’).item(0)

  49. var scriptTag = document.getElementById(id);

  50. if(scriptTag) return;

  51. //Si no se quiere cache se genera un número aleatorio

  52. if(opt.cache==false){

  53. var milisegundos = new Date().getTime().toString();

  54. if(file.indexOf(“?”)!=-1) file = file+“&”;

  55. else file = file+“?”;

  56. file = file+milisegundos;

  57. }

  58. css = document.createElement(‘link’);

  59. css.rel = ’stylesheet’;

  60. css.href = file;

  61. css.type = ‘text/css’;

  62. css.id = id;

  63. head.appendChild(css)

  64. return;

  65. },

  66. unloadCSS:function(id){

  67. var head = document.getElementsByTagName(‘head’).item(0)

  68. var scriptTag = document.getElementById(id);

  69. if(scriptTag) head.removeChild(scriptTag);

  70. return;

  71. }

  72. }

La forma de uso es simple, solo incluyen el archivo scriptloader.js al principio de su página

<script src=“http://ruta/a/scriptloader.js” type=“text/javascript”></script>

Y para incluir el archivo se llama de la siguiente forma:

ScriptLoader.loadScript(“http://ruta/al/archivo.js”,{cache:false, oncomplete: function(){alert(‘Probando carga de archivo’)}});
Los parámetros son opcionales y pueden ser los siguientes:

  • id: especifica una id para el archivo, si se deja nulo el script le asigna una id del tipo js_archivo
  • cache: true o false. Si se especifíca en false la libreria le asignara un ?random al final de manera que el archivo siempre se renueve al momento de cargar la pá
  • onComplete: esto nos permite indicarle algun evento al momento de que el script se cargue en su totalidad

De la misma manera para incluir un archivo CSS es necesario escribir:

ScriptLoader.loadCSS(“http://ruta/al/archivo.css”);

Bueno pues espero que les sirva este aporte (no pretendo reinventar el hilo negro).

FUENTE: www.webadictos.com.mx

Categorías:CSS, DESARROLLO
  1. Aún no hay comentarios.
  1. Aún no hay trackbacks