Met meerdere Windows onload functies In Javascript
Heres een andere kleine peice van Javascript bedrog dat ik moest graven rond omdat de situatie commaned het. In een van mijn websites, ik had deze situatie, waarin ik moest een "windows.onload" twee keer uit te voeren. Het eerste wat dat zou kwam er een onervaren geest als de mijne (ik moet eerlijk zeggen dat, sinds ik met behulp van javascript frameworks en libraries, heb ik forgotton om eenvoudige dingen te doen op mijn eigen ... triest maar waar), is de volgende methode ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; etc. ..
Sorry om te zeggen, maar dit zal niet werken ... niet wilt met de uitvoering wetenschap van Javascript veel te bespreken ... maar volgens mijn recente ervaring, alleen de laatste functie (onloadfn3) ziek zal daadwerkelijk worden uitgevoerd.
In normale omstandigheden, in tegenstelling tot de mijne (die later zal ik het hebben over een beetje) ... je zou kunnen doen op een van de volgende handelingen uit om mutliple onload functies uit te voeren ....
Of iets dergelijks
functie doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Voor mijn huidige situatie, kan ik ook niet gebruik maken van de bovenstaande ...
Waarom heb ik nodig om windows.onload twee keer te bellen, in plaats van dat te roepen twee functies binnen een onload-functie? Hier is een snelle blik op mijn probleemstelling ...
"Mijn site's zijn gestructureerd als de WordPress thema .... dwz er is een veel voorkomende header.php en footer.php dat wordt opgenomen in alle pagina's. Er is een onload functie wijze uitvoering in de footer.php op enkele veelgestelde onload functies uit te voeren. En er zijn enkele pagina's die moeten iets van hun eigen OnLoad, behalve die die door het gemeenschappelijke onload functie. Als ik wijs callback functie rechtstreeks aan de window.onload handler, zal het over-rijden eerder toegewezen callbacks in de footer.php "
.... Is mijn probleem begrepen
?
Nou! er zijn weinig oplossingen die ik vond. Ze zijn allemaal erg op elkaar lijken en vooral implementions van een oplossing gegeven door Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Oplossing:
Voeg eenvoudig deze javascript-code naar site ...
functie addLoadEvent (functie) { var oldonload = window.onload; if (typeof window.onload! = 'functie') { window.onload = functie } Else { window.onload = function () { if (oldonload) { oldonload () } func () } } }En noem het in plaats van de gebruikelijke "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Meer code kan worden uitgevoerd laden van de pagina * });
Voordelen van deze code snippet ...
1. In de eerste, Het laat je meerdere windows.onload evenementen, genoemd van aparte delen van uw code, zonder overridding de vorige definitie
2. Het is echt onopvallend. Het kan worden geplaatst in een bestand met uw andere scripts of in een apart bestand.
3. Het werkt zelfs als window.onload al is ingesteld.










































