Volanie viac okien onload funkcie v JavaScriptu
Tu je ďalší malý peice z podvodu JavaScriptu, ktoré som musel kopať okolo, pretože situácia commaned to. V jednom z mojich webových stránok, mal som túto situáciu, kedy som musel vykonávať "windows.onload" dvakrát. Prvá vec, ktorá by prišla do pamäte, neskúsený ako ja (Musím úprimne povedať, že od tej doby som sa pomocou JavaScriptu rámcov a knižnice, som forgotton robiť jednoduché veci na vlastnú päsť ... smutné, ale pravda), je táto metóda ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; atď ..
Ospravedlňujeme sa, ale na, zvyknutý túto prácu ... nechcem diskutovať o vykonaní vedu Javascript moc ... ale podľa mojej nedávnej skúsenosti, (onloadfn3) len posledný funkcie zle vlastne vykonaný.
V normálnych situáciách, na rozdiel od bane (čo budem hovoriť o niečo neskôr) ... môžete urobiť jednu z nasledujúcich možností na vykonanie zahŕňa viac onload funkcie ....
Alebo niečo také
Funkcia doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Pre moje súčasnej situácii, nemôžem použiť niektorý z vyššie uvedených ...
Prečo musím zavolať windows.onload dvakrát, skôr to, že volanie dve funkcie v jednom onload funkcie? Tu je rýchly pohľad na môj problém vyhlásenie ...
"Moje stránok stránky sú štruktúrované ako WordPress Téma .... teda existuje spoločný Header.php a Footer.php, ktorý sa zaradené do všetkých stránok stránkach. K dispozícii je funkcia onload implementaion v Footer.php urobiť nejaké spoločné onload funkcie. A existuje niekoľko stránok, ktoré je potrebné niečo vlastného onload, na rozdiel od tých, ktoré uskutočňuje spoločné onload funkcie. Keby som priradiť funkciu spätného volania priamo na window.onload psovoda, bude to cez-jet skôr pridelené spätné volania v Footer.php "
.... Je to môj problém chápať
?
No! existuje niekoľko riešení, ktoré som nájsť. Všetci sú si veľmi podobné a hlavne implementions roztoku danej Simon Willison ods http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Riešenie:
Stačí pridať tento kód javascript na stránky ...
Funkcia addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload! = "funkcia") { window.onload = funkcie Else {} window.onload = function () { if (oldonload) { oldonload () } funkcie () } } }A volať to miesto obvyklého "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Viac spustenie kódu na * načítaní stránky });
Výhody tohto fragmentu kódu ...
1. V prvom rade, to vám umožní mať viac windows.onload udalosti, volal z oddelených častí kódu, bez toho, aby overridding predchádzajúcej definícii
2. Je to naozaj decentné. To môže byť umiestnená v súbore s vašimi ostatnými skripty alebo v samostatnom súbore.
3. Funguje to aj v prípade, že window.onload už nastavený.










































