Wywołanie wielu funkcji systemu Windows onload w JavaScript
Heres kolejny mały peice oszustwa Javascript że musiałem grzebać, bo sytuacja commaned go. W jednej z moich stron internetowych, miałem taką sytuację, gdzie musiałem wdrożyć "windows.onload" dwa razy. Pierwszą rzeczą, która przyszła do niedoświadczonego umysłu jak mój (muszę szczerze powiedzieć, że od I zostały z wykorzystaniem środowisk JavaScript i biblioteki, mam forgotton robić proste rzeczy na własną rękę ... smutne ale prawdziwe), jest następująca metoda ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; itd. ..
Przykro powiedzieć, ale to przyzwyczajenie pracować ... nie chcesz, aby omówić nauki wykonanie kodu JavaScript dużo ... ale według moich ostatnich doświadczeń, tylko ostatnia funkcja (onloadfn3) będzie chory rzeczywiście zostanie wykonany.
W normalnych sytuacjach, w przeciwieństwie do moich ust co powiem nieco później) ... można zrobić jedną z następujących czynności do wykonania mutliple funkcje onload ....
Czy coś takiego
doOnLoad function () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Z mojej obecnej sytuacji, nie mogę skorzystać z jednej z wyżej ...
Dlaczego trzeba zadzwonić windows.onload dwa razy, a że nazywając dwie funkcje w jednej funkcji onload? Oto szybki rzut oka na moje oświadczenie problem ...
"Moje strony witryny są zorganizowane podobnie jak motyw WordPress .... tzn. istnieje wspólny header.php i footer.php, który jest włączone do wszystkich stron witryny. Istnieje implementaion funkcja onload w footer.php zrobić kilka typowych funkcji onload. I jest kilka stron, które muszą coś własnego OnLoad, oprócz tych, zrobić wspólną funkcji onload. Gdybym przypisanie funkcji zwrotnej bezpośrednio do obsługi window.onload, będzie to zbyt jeździć wcześniej przypisane zwrotnych w footer.php "
.... Jest mój problem rozumieć
?
Dobrze! istnieje kilka rozwiązań, które znalazłem. Wszystkie one są bardzo podobne, a przede wszystkim implementions roztworu podanego przez Simon Willison ust http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Rozwiązanie:
Wystarczy dodać ten kod javascript do witryny ...
Funkcja addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload! = 'Funkcja') { window.onload = func } Else { window.onload = function () { if (oldonload) { oldonload () } func () } } }I nazywają to zamiast zwykłego "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Więcej kodu na * ładowania strony });
Zalety tego fragmentu kodu ...
1. Przede wszystkim, to pozwala mieć wiele zdarzeń windows.onload, wywoływany z oddzielnych części kodu, bez overridding poprzednią definicję
2. To jest naprawdę dyskretna. Można go umieścić w pliku ze swoimi innych skryptów lub w osobnym pliku.
3. To działa nawet jeśli window.onload został już ustawiony.










































