Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/11/2013, 10:01
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 4 meses
Puntos: 206
Respuesta: Comportamiento extraño de elemento <script>

No importa donde lo pongas. Los navegadores lo ejecutarán antes de dibujarte la página. pero hay una diferencia. Si pones el script en el head, cuando se ejecute javascript, no existirá ningún elemento HTML en su contexto, asi que si ejecutas instrucciones de recuperación de elementos HTML como document.getElemenById, nunca encontrarán nada. Así que algunos gurús eligieron poner el script abajo del todo como último elemento del BODY. Así, javascript podría manipular cualquier elemento del DOM cuando se ejecutase.

Pero esa tampoco es la mejor forma de hacerlo. Lo mejor es meter el código en el head, y utilizar los eventos de el objeto window para ejecutar código que necesite trabajar con el DOM. Puedes declarar funciones y variables fuera de eevento load. Lo que no puedes hacer fuera del load es llamar a la función para que recupere o actúe sobre los elementos. Por ejmplo:

Código Javascript:
Ver original
  1. <script>
  2. function meterTexto(id, texto){
  3.     var elemento=document.getElementById(id);
  4.     if (elemento) elemento.innerHTML=texto;
  5. }
  6. window.onload=function(){
  7.     meterTexto("contenido","Este es el div de contenido");
  8. }
  9. </script>
Si conoces otros lenguages como JAVA o C, imagina que window.onload=function(){ ..... } ó window.addEventListener("load", function(){ ...... }) es el MAIN; que sólo se ejecutará cuando absolutamente toda la página HTML y scripts estén cargados. pero ojo, puede que haya imágenes que aún estén descargándose, con la página HTML me refiero a su árbol DOM.

Última edición por marlanga; 29/11/2013 a las 10:08