Añadir fácilmente funciones al evento onload

Es frecuente que al juntar varios JavaScript obtenidos de diversas fuentes, cada uno haga su propia asignación al método window.onload, por lo que normalmente funcionará únicamente uno de los JavaScript.

El siguiente framento de código JavaScript permite añadir funciones al evento onload sin problemas de este tipo, lo único que debemos tener en cuenta es que las asignaciones deben hacerse utilizando esta función.

function addLoadEvent(func) {
   var oldonload = window.onload;
   if (typeof window.onload != 'function') {
      window.onload = func;
   }
   else {
      window.onload = function() {
      oldonload();
      func();
    }
}

Si quisiéramos añadir la función «funcion1» al evento, haríamos únicamente addLoadEvent('funcion1').

Para todo esto relacionado con los eventos, el W3C ha creado la especificación
DOM Level 2 Event, aunque dicha especificación no está implementanda en todos los navegadores, por lo que aunque desde luego esta no es la forma óptima ni ideal de hacer las cosas, el método descrito nos permite resolver el problema.

Si tienes interés en obtener más información sobre qué navegadores soportan la especificación del W3C, puedes hacerlo en el árticulo Advances event registration de Quirksmode.

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

5 Respuestas para “Añadir fácilmente funciones al evento onload”

  1. Otra opción sería especificarlo en el atributo onLoad del BODY, del estilo:

  2. En efecto, el problema que tiene esa solución es cuando trabajas en un proyecto de cierta dimensión. Normalmente utilizarás plantillas e includes, probablemente uno para la cabecera donde tendras el body y otro para el pié, donde tendrás el cierre del body.

    Puede darse el caso de que tras cargar la cabecera, en función de la página o sección en la que estés, se carguen unos JS u otros, por lo que a priori no podrías saber en la cabecera que llamadas poner. Podrías modificar la cabecera y hacerla dependiente de la página o sección, pero ello incrementaría el acoplamiento y a la larga hace más complejo el mantenimiento.

  3. NiquitoNipongo 11. Ene, 2007 en 4:35 pm

    No estaria demás que dijeras que es una solución creada por Simmon Willinson

  4. Pues ya que lo dices tú, ahí queda, dicho. Gracias por la puntualización, no lo sabía.

  5. No sirve es funcion al menos no en firefox!