Pozivanje više Windows Onload funkcije u JavaScript
Evo još malo od peice Javascript trikovima da sam morao iskopati oko, jer situacija to commaned. U jednom od mojih web stranica, morao sam ovu situaciju u kojoj sam morao provesti "windows.onload" dva puta. Prva stvar koju bi došao do neiskusan umu poput moje (Moram iskreno reći da, budući da sam bio koristeći javascript okvire i biblioteke, ja sam forgotton raditi jednostavne stvari na svoje ... tužno, ali istinito), je sljedeća metoda ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; itd. ..
Žao nam je reći, ali to neće raditi ... ne želim raspravljati o izvršenju znanost Javascript puno ... ali u skladu s mog nedavnog iskustva, samo zadnja funkcija (onloadfn3) bolesna zapravo će se izvršiti.
U normalnim situacijama, za razliku od moje (što ću govoriti o malo kasnije) ... možete učiniti jedno od sljedećeg izvršiti mutliple onload funkcije ....
Ili nešto ovako
doOnLoad funkcija () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Za moju trenutnu situaciju, ne mogu koristiti bilo koji od gore ...
Zašto trebam nazvati windows.onload dva puta, a ne da zovete dvije funkcije u jednom onload funkciji? Ovdje je brzi pogled na moj problem gubitka ...
"Moji web stranice su strukturirane poput Wordpress temu .... tj. postoji zajednički Header.php i Footer.php koji se uključeni u sve web stranice. Tu je implementaion onload funkcija u Footer.php učiniti neke zajedničke onload funkcije. I postoji nekoliko stranica koje je potrebno nešto vlastitog ONLOAD, osim onih koji obavljaju zajedničke funkcije onload. Ako sam dodijeliti funkciju za povratni poziv izravno na window.onload rukovatelj, to će više-voziti prethodno dodijeljene callbacks u Footer.php "
.... Je li moj problem razumio
?
Dobro! postoji nekoliko rješenja koja ja je pronaći. Svi oni su vrlo slične i uglavnom implementions otopine koju Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Rješenje:
Jednostavno dodajte ovaj javascript kod za stranice ...
addLoadEvent funkcija (funkcija) { var oldonload = window.onload; if (typeof window.onload! = 'funkcija') { window.onload = funkcija Else {} window.onload = funkcija () { if (oldonload) { oldonload () } funkcija () } } }I nazovite ga, umjesto uobičajenog "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (funkcija () { / * Više koda na stranici opterećenja pokazuje * });
Prednosti ovog koda isječak ...
1. Prvenstveno, to omogućuje vam da imate više windows.onload događanja, nazvan od odvojene dijelove koda, bez overridding prethodnu definiciju
2. To je stvarno neprimjetna. To se može smjestiti u datoteku s drugim skriptama ili u zasebnoj datoteci.
3. Djeluje čak i ako window.onload je već postavljena.










































