Opkald til flere Windows-onload funktioner i Javascript

Heres en anden lille peice af Javascript fup, at jeg var nødt til at grave rundt, fordi situationen commaned det. I en af ​​mine hjemmesider, havde jeg denne situation, hvor jeg var nødt til at gennemføre "windows.onload" to gange. Den første ting, der ville kom til en uerfaren sind som mit (jeg må ærligt sige, at siden jeg har brugt javascript rammer og biblioteker, har jeg forgotton til at gøre simple ting på min egen ... trist, men sandt), er følgende metode ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 etc. ..

Ked af at sige, men plejer dette arbejde ... ikke ønsker at diskutere udførelsen videnskab Javascript meget ... men efter min seneste erfaringer, (onloadfn3) kun den sidste funktion vil syge rent faktisk bliver udført.

I normale situationer ... i modsætning til mine (som jeg vil tale om lidt senere) kan du gøre et af følgende for at udføre mutliple onload funktioner ....

Eller noget som dette

 Funktionen doOnLoad () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

For min nuværende situation, kan jeg ikke bruge nogen af ​​ovenstående ...
Hvorfor skal jeg kalde windows.onload to gange, i stedet at kalde to funktioner inden for en enkelt onload funktion? Her er hurtigt kig på min problemformulering ...

"Mit websted sider er opbygget som WordPress tema .... dvs der er en fælles header.php og Footer.php der bliver inkluderet i alle de websider. Der er en onload funktion gennemfoerelse sted i Footer.php til at gøre nogle almindelige onload funktioner. Og der er få sider, der skal noget af deres egen OnLoad, bortset fra dem, udført af den fælles onload funktion. Hvis jeg tildeler callback funktion direkte til window.onload handleren, vil det over-rider tidligere tildelt tilbagekald i Footer.php "

.... Er mit problem forstået :) ?

Nå! der er få løsninger, som jeg fandt. De er alle meget ens og hovedsagelig implementions en løsning givet ved Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Opløsning:

Du skal blot tilføje denne javascript kode til websted ...

 Funktionen addLoadEvent (funk) {
     var oldonload = window.onload;
     if (typeof window.onload! = 'funktion') {
        window.onload = funk
     } Else {
        window.onload = function () {
            if (oldonload) {
                   oldonload ()
           }
           funk ()
        }
    }
 }

Og kalder det i stedet for den sædvanlige "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 addLoadEvent (function () {
 / * Mere kode til at køre på side belastning *
 }); 

Fordele ved dette kodestykke ...
1. Primært, det kan du have flere windows.onload begivenheder, kaldes fra separate dele af din kode, uden at overridding den tidligere definition
2. Det er virkelig diskret. Det kan placeres i en fil med dine andre scripts eller i en separat fil.
3. Det virker selvom window.onload allerede er blevet indstillet.


5 Responses til "Opkald flere Windows-onload funktioner i Javascript"

Efterlad et svar

NDK hjem | Udtrykke IT | udtrykke Smag | udtrykke Penmenship | udtrykke Awe | udtrykke mig