Chamando múltiples funcións onload de Windows en Javascript
Heres outro anaco pouco de malandragem Javascript que eu tiven que cavar ao redor porque a situación commaned-lo. Un dos meus sitios web, eu tiven esta situación onde eu tiven que aplicar "windows.onload" dúas veces. O primeiro que veu á mente un inexperto como o meu (teño que dicir honestamente que, unha vez que teño benvida a empregar frameworks JavaScript e bibliotecas, eu forgotton para facer cousas simples no meu propio ... triste pero é certo), é o seguinte método ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; etc ..
Sentímolo dicir, pero, iso non vai funcionar ... non quero discutir a ciencia execución de Javascript moi ... pero segundo a miña experiencia recente, só a función anterior (onloadfn3) vai realmente mal executada.
En situacións normais, ao contrario do meu (que eu vou falar un pouco máis tarde) ... podería facer as seguintes opcións para realizar funcións de onload mutliple ....
Ou algo así
doOnLoad function () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Para a miña situación actual, non podo utilizar calquera dos anteriores ...
Por qué me teño chamar windows.onload dúas veces, en vez de chamar dúas funcións dentro dunha función onload único? Aquí é rápido ollar para a miña declaración do problema ...
"Páxinas do meu sitio web son estruturados como o tema do WordPress .... é dicir, hai un header.php e footer.php comúns que está incluído en todas as páxinas do sitio web. Hai unha implementaion función onload nos footer.php para facer algunhas funcións onload comúns. E hai poucas páxinas que precisan de algo da súa propia OnLoad, ademais daqueles feitos pola función onload común. Se eu asignar función de callback directamente ao manipulador de window.onload, ha sobrepasar-se callbacks previamente designados nos footer.php "
.... O meu problema entendido
?
Ben! existen poucas solucións que podo atopar. Todos eles son moi semellantes e, sobre todo, implementions dunha solución dada por Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Solución:
Basta engadir este código javascript á páxina web ...
addLoadEvent función (func) { var oldonload = window.onload; if (typeof window.onload! = 'función') { window.onload = func Else {} window.onload = function () { if (oldonload) { oldonload () } func () } } }E chama-lo de vez da "windows.onload" usual
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Máis código para ser executado na carga da páxina * });
As vantaxes deste fragmento de código ...
1. En primeiro lugar, permite que ten eventos windows.onload múltiples, chamados de partes separadas do seu código, sen overridding a definición anterior
2. É moi discreto. Pode ser instalado nun arquivo con seus outros scripts ou nun ficheiro separado.
3. Funciona mesmo window.onload xa foi definido.










































