Mit mehreren Windows-Onload Funktionen in JavaScript
Heres ein weiteres kleines peice von Javascript Betrügerei, dass ich zu wühlen, weil die Situation commaned es hatte. In einem meiner Web-Sites, hatte ich diese Situation, wo ich "windows.onload" zweimal umsetzen mussten. Das erste, was einem unerfahrenen Geist wie meiner (ich muss ehrlich sagen, dass, seit ich verwendet haben Javascript Frameworks und Bibliotheken, habe ich forgotton, einfache Dinge auf meine eigene ... traurig aber wahr tun) kam wäre, ist die folgende Methode ...
window.onload = onloadfn1; window.onload = onloadfn2; window.onload = onloadfn3; etc. ..
Es tut uns leid zu sagen, aber, diese nicht funktionieren ... nicht wollen, um die Ausführung von Javascript Wissenschaft viel zu diskutieren ... aber nach meinen jüngsten Erfahrungen, nur die letzte Funktion (onloadfn3) wird krank tatsächlich ausgeführt werden sollen.
In normalen Situationen, im Gegensatz zu mir (was ich über etwas später zu sprechen) ... Sie tun können einen der folgenden Schritte, um mutliple onload-Funktionen ausführen ....
Oder so ähnlich
Funktion doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad;
Für meine aktuelle Situation, kann ich nicht verwenden entweder der oben ...
Warum muss ich zweimal windows.onload nennen, eher, dass das Aufrufen zwei Funktionen in einem einzigen onload-Funktion? Hier ist kurzer Blick auf mein Problem Aussage ...
"Meine Website Seiten werden wie die WordPress-Theme aufgebaut .... dh es gibt eine gemeinsame header.php und footer.php, die in all den Seiten der Website enthalten wird. Es gibt eine Funktion onload Implementierung in die footer.php, einige gemeinsame onload Funktionen zu tun. Und es gibt einige Seiten, die etwas von ihrem eigenen ONLOAD müssen, abgesehen von den von der gemeinsamen onload-Funktion. Wenn ich Callback-Funktion direkt zuweisen, der window.onload Handler, wird es über-fahren vorher zugewiesene Rückrufe in den footer.php "
.... Ist mein Problem verstanden
?
Na ja! gibt es nur wenige Lösungen, die ich gefunden haben. Sie sind alle sehr ähnlich und vor allem implementions einer Lösung von Simon Willison (gegeben http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Lösung:
Fügen Sie einfach diesen JavaScript-Code, um vor Ort ...
addLoadEvent Funktion (func) { var = oldonload window.onload; if (typeof window.onload! = 'Funktion') { window.onload = func } Else { window.onload = function () { wenn (oldonload) { oldonload () } func () } } }Und nennen es statt der üblichen "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Mehr Code, um beim Laden der Seite ausgeführt werden * });
Die Vorteile dieses Code-Snippet ...
1. In erster Linie, es lässt Sie haben mehrere windows.onload Ereignisse, genannt von den unterschiedlichen Teilen des Codes, ohne Überschreiben der bisherigen Definition
2. Es ist wirklich unauffällig. Es können in einer Datei mit Ihren anderen Skripten oder in einer eigenen Datei gespeichert werden.
3. Es funktioniert auch, wenn window.onload bereits gesetzt worden.











































6. Juli 2009 um 10.17 Uhr
zPDidP Gute Danke Es ist sehr schön,
29. August 2009 um 2:22 Uhr
Dies ist sehr sauber und gut funktioniert, ohne dass Sie auf andere Seiten zu bearbeiten. Vielen Dank!
3. Juli 2010 um 21.13 Uhr
Hat wunderbar funktioniert. Vielen Dank für Ihre Lösung.
6. Februar 2011 um 09.04 Uhr
Fantastische Lösung!
21. September 2011 um 1:08 am
Vielen, vielen Dank, hilft mir dies mein Problem lösen, nach ein paar Nächten mit Schlaf heraus und ein Dutzend Gläser Kaffee diesen Beitrag endlich mein Problem genagelt, vielen Dank!