Heres kitą mažai peice Javascript gudrybės, kad aš turėjo kasti aplink, nes situacija commaned. Viename iš mano interneto svetainėse, turėjau šią situaciją, kai aš turėjo, įgyvendinti windows.onload "du kartus. Pirmas dalykas, kuris atėjo, pavyzdžiui, mano nepatyrusio proto Turiu nuoširdžiai pasakyti, kad, nes aš naudoju javascript struktūras ir bibliotekas, aš forgotton, daryti paprastų dalykų mano ... liūdna, bet tiesa), šis metodas ...
window.onload = onloadfn1;
window.onload = onloadfn2;
window.onload = onloadfn3;
ir tt ..
Atsiprašome pasakyti, bet, tai įpratęs dirbti ... dont wanna aptarti vykdymo mokslo veikiancio Javascript, daug ... bet pagal mano pastarojo laikotarpio patirtį, tik paskutinis funkcija (onloadfn3) bus blogai faktiškai gauti įvykdytas.
Normaliomis aplinkybėmis, priešingai nei mano straipsnio, kurį aš kalbėti apie šiek tiek vėliau) ... galite atlikti vieną iš šių veiksmų atlikti mutliple onload funkcijas ....
Arba kažkas panašaus į tai
doOnLoad funkcija () {
onloadfn1 ();
onloadfn2 ();
onloadfn3 ();
}
window.onload = doOnLoad;
Mano dabartinės padėties, aš negali naudoti arba iš aukščiau ...
Kodėl aš turiu skambinti windows.onload du kartus, o kad paskambinus dvi funkcijas vienoje onload funkcijos? Štai greitas pažvelgti į savo problemą pareiškimą ...
"Mano svetainės puslapius struktūra kaip WordPress tema .... ty yra bendro Header.php ir footer.php, kad bus įtraukti į visus svetainės puslapius. Yra, onload funkcija implementaion, footer.php padaryti keletą bendrų onload funkcijas. IR yra keletas puslapių, kad reikia į kažką savo onload, išskyrus tuos, kurie padaryti bendros onload funkcijos. Jei aš priskirti atgalinio ryšio funkciją tiesiogiai window.onload prižiūrėtojas, jis bus per daug važinėti anksčiau pavestas iššūkius, footer.php "
.... Ar mano problema suprantama
?
Gerai! yra keletas sprendimų, kad aš rasti. Jie visi yra labai panašūs ir daugiausia implementions tirpalo,, pateiktą. Simon Willison http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Sprendimas:
Tiesiog pridėkite šį javascript kodą į svetainę ...
. funkcija addLoadEvent (funkcijas) {
var oldonload = window.onload;
jei (typeof window.onload = "funkcija") {
window.onload = funkcijas
} Else {
window.onload = function () {
jei (oldonload) {
oldonload ()
}
funkcijas ()
}
}
}
Ir vadina jį vietoj įprasto "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad);
addLoadEvent (function () {
/ * Daugiau kodui veikti puslapio įkelties *
});
Privalumai Šio kodo fragmentą ...
1. Pirmiausia, ji leidžia turėti keletą windows.onload įvykius, paragino savo kodą iš atskirų dalių, be overridding ankstesnį apibrėžimą
2. Tai tikrai nekrenta į akis. Jis gali būti tiekiami su kitų jūsų scenarijų failą arba atskirame faile.
3. Jis veikia, net jei window.onload jau nustatyti.