Llamar a múltiples funciones de Windows onload en Javascript
Aquí está otro pedazo pequeño de engaño Javascript que tenía que cavar a su alrededor porque la situación lo commaned. En uno de mis sitios web, he tenido esta situación en la que tuve que poner en práctica "windows.onload" dos veces. La primera cosa que vino a la mente una experiencia como la mía (tengo que decir honestamente que, desde que he estado utilizando frameworks de JavaScript y las bibliotecas, he olvidado de hacer las cosas simples por mi cuenta ... triste pero cierto), es el siguiente método ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; etc ..
Lo siento decirlo, pero, este trabajo costumbre ... no quiero hablar sobre la ciencia ejecución de Javascript mucho ... pero de acuerdo a mi experiencia reciente, sólo la última función (onloadfn3) la mala voluntad se ejecuta realmente.
En situaciones normales, a diferencia de la mía (que voy a hablar un poco más tarde) ... puedes hacer lo siguiente para ejecutar funciones mutliple onload ....
O algo como esto
doOnLoad function () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Por mi situación actual, no puede utilizar cualquiera de los anteriores ...
¿Por qué tengo que llamar a windows.onload dos veces, en lugar que llamar a dos funciones dentro de una función onload sola? Aquí es rápido vistazo a mi declaración del problema ...
"Mis páginas del sitio se estructura como el tema de WordPress .... es decir, hay un header.php y footer.php comunes que se incluyen en todas las páginas del sitio. Hay una función de la Implementación onload en los footer.php para hacer algunas funciones comunes onload. Y hay pocas páginas que necesitan algo de su propia ONLOAD, además de los realizados por la función onload común. Si asigno función de callback directamente al controlador window.onload, será pasar por encima de las devoluciones de llamada asignados previamente en los footer.php "
.... Se entiende mi problema ?
Bueno! existen pocas soluciones que se encontró. Todos ellos son muy similares y sobre todo implementions de una solución dada por Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Solución:
Basta con añadir el código javascript para el sitio ...
función de addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload! = 'function') { window.onload = función Else {} window.onload = function () { if (oldonload) { oldonload () } func () } } }Y lo llaman en lugar del habitual "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Más código se ejecute en carga de la página * });
Las ventajas de este fragmento de código ...
1. En primer lugar, que le permite disponer de múltiples eventos windows.onload, llamada a partir de piezas separadas de su código, sin anulando la definición anterior
2. Es muy discreto. Se puede colocar en un archivo con las secuencias de comandos de otros o en un archivo separado.
3. Funciona incluso si window.onload ya se ha establecido.










































