2011-08-21 41 views
13

¿Hay algún controlador de eventos antes de onLoad/onPageShow? El problema con onLoad es que si hay algún cambio en la pantalla, la página se mostrará sin cambios hasta que esté completamente cargada, luego se ejecutará la secuencia de comandos. ¿Cuál es la mejor manera de asegurarse de que se ejecutará lo antes posible?Javascript antes de la carga?

+2

Los elementos de scripts en línea síncronos se ejecutarán antes de esos eventos. –

Respuesta

21

Si coloca las declaraciones de Javascript (en lugar de definiciones de funciones) dentro de una etiqueta <script>, se ejecutarán durante la carga de la página, antes de que se active el evento onLoad.

<html> 
<body> 
    <h2>First header</h2> 
    <script type="text/javascript"> 
    alert("Hi, I am here"); 
    document.write("<h3>This is Javascript generated</h3>"); 
    </script> 
    <h2>Second header</h2> 
</body> 
</html> 

La advertencia es que no se puede buscar elementos de identificación porque estos elementos no podría haber sido prestados, por lo que su capacidad de cambiar la página de esa manera es limitado.

Línea inferior: posible, no recomendado.

Lo que suele hacer en este tipo de situaciones es la siguiente:

  • hacer las partes de la página que puede cambiar invisible (a través de style="visibility:hidden;");
  • Make onLoad ejecuta un código Javascript que cambia la página y luego establece la visibilidad de dichas partes en visibility:visible.
+0

Creo que * la mayoría * de los navegadores manejarán correctamente 'getElemementById' siempre que el elemento haya sido previamente definido en el documento; sin embargo, el DOM no está garantizado hasta la carga como se indicó, por lo que es una pendiente ... :) –

+2

También podría usar el evento DOMContentloaded que se dispara cuando el DOM ha cargado por completo, pero no todos los medios. OnLoad solo se dispara después de que se hayan cargado todos los medios. – citadelgrad

-1

La respuesta simple es colocar la llamada de función después del elemento DOM dentro de las etiquetas de script, dentro del cuerpo de la página. Tuve este problema al utilizar una función de JavaScript para darle estilo a mis enlaces de menú de navegación, sin embargo, tenía un elemento de mapa de google que hacía que la página se cargara lentamente. En esta página particular, ejecuté el script justo después del enlace. Es una solución, quizás no la mejor, pero funciona. Espero que esto ayude.

Cuestiones relacionadas