miércoles, 12 de julio de 2017

Comenzar la ejecución de un programa en Javascript al ir a una página

Existen dos posibilidades que permiten comenzar la ejecución de un script al abrir una página.
  • window.onload
  • document.onload

window.onload

Lo adecuado es llamar al archivo de Javascript desde el head, pero esto supone que en ocasiones se pueden llegar a ejecutar las instrucciones del script antes de que se haya terminado de cargar toda la página y si alguna línea del script que se está ejecutando necesita que exista algún elemento del body que aún no se ha cargado puede dar lugar a un error. Esto se podría solucionar llamando al archivo js justo al final del body, con ello nos aseguramos que ya se han cargado todas las estructuras html del body y que no se producirá ese tipo de error. Pero esto último no es una solución adecuada ya que el body se ha de reservar para la estructura html y no para llamar al script, cosa que se ha de hacer desde el head. Esto se soluciona poniendo la llamada al fichero js desde el head y usando window.onload que permite ejecutar la función que le indiquemos justo después de haber cargado en memoria todo el código html del body.

window.onload = nombre_funcion;

Si existen varias funciones que deseamos lanzar lo que procede es pedir a window.onload que ejecute una función principal y ésta se encargará de ir lanzando las demás en el orden adecuado.

 function principal(){  
     funcion1();  
     funcion2();  
     funcion3();  
   }  
 window.onload = principal;  

document.onload

Es similar al anterior. La diferencia estriba en que window.onload se activa cuando se ha cargado completamente el código html y se han llamado a todos los archivos externos, imágenes incluidas, lo cual puede tardar tiempo en algunos casos.

Por el contrario, document.onload se activa cuando se ha cargado el DOM y aún no se han cargado todos los archivos externos, imágenes incluidas. De esta forma se gana tiempo, ya que trabaja sin esperar a que lleguen todas las imágenes y demás archivos externos.

En algunos navegadores actualmente window.onload se dispara en cuanto se carga el DOM al igual que hace document.onload.

usando <body onload="myFunction()">

Puede ver un ejemplo en:

con el evento load

Ponemos la llamada al archivo de scipt en el head y luego en el código JS envolvemos todo el código entre las siguientes líneas.

Con una función de callback.

 window.addEventListener('load', function(){  
  //aquí va el código JS  
 });  

También se puede escribir lo anterior con formato de función de flecha.

 window.addEventListener('load', () => {  
  //aquí va el código JS  
 });  

De esta forma la ejecución del código JS se realizará después de que se hubiera cargado todo el DOM, y por lo tanto podemos hacer la llamada al archivo JS en el head del código HTML.

con jQuery

Es preferible trabajar con la librería jQuery que consigue el mismo objetivo y ellos se encargan de que sea compatible con todos los navegadores. Para ver como funciona consulte la siguiente entrada.

Conseguiremos nuestro objetivo que consiste en poder llamar al script desde el head y que éste se ejecute después de haberse mostrado completamente el documento DOM, para que el código JavaScript pueda interactuar con las etiquetas, los id y las claeses que ya han sido cargadas.

No hay comentarios:

Publicar un comentario