Hinzufügen zu window.onload Ereignis?
Ich Frage mich, wie das hinzufügen einer anderen Methode aufrufen, um das Fenster.onload-Ereignis ab, wenn es bereits
zugewiesen wurde eine Methode aufrufen.
Angenommen, irgendwo im Skript habe ich diese Belegung...
window.onload = function(){ some_methods_1() };
und dann später im Skript habe ich diese Zuordnung
window.onload = function(){ some_methods_2() };
So wie es da steht, nur some_methods_2
aufgerufen werden. Gibt es eine Möglichkeit, um zu den vorherigen window.onload
Rückruf ohne Stornierung some_methods_1
? (und auch ohne die beiden some_methods_1()
und some_methods_2()
in der gleichen Funktion blockieren).
Ich denke, diese Frage ist nicht wirklich über window.onload
aber eine Frage über javascript im Allgemeinen. Ich will NICHT, um etwas zu ordnen window.onload
in einer Weise, dass, wenn ein anderer Entwickler die Arbeit an dem Skript, und fügen Sie ein Stück code, der verwendet auch window.onload
(ohne Blick auf meine vorherigen code), würde er das deaktivieren meiner onload-Ereignis.
Ich bin auch gefragt, die gleiche Sache über
$(document).ready()
in jquery.
Wie kann ich es hinzufügen, ohne Sie zu zerstören, was vorher kam, oder was könnte kommen, nach?
InformationsquelleAutor der Frage pepper | 2013-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Verwendung von jQuery, die Sie nicht haben, etwas besonderes zu tun. Handler Hinzugefügt, über
$(document).ready()
nicht gegenseitig überschreiben, sondern führen im Gegenzug:Wenn Sie nicht mit jQuery, könnten Sie
addEventListener ()
wie gezeigt, durch Karaxuna, plusattachEvent
für IE<9.Beachten Sie, dass
onload
ist nicht äquivalent zu$(document).ready()
- der ehemalige wartet, CSS, Bilder,... als auch, während die letzteren wartet, bis der DOM-Baum nur. Moderne Browser (IE und seit IE9) unterstützt dieDOMContentLoaded
Ereignis auf das Dokument, das entspricht der jQueryready
Ereignis, aber IE<9 nicht.Wenn weder die option verfügbar ist (zum Beispiel, Sie sind nicht der Umgang mit einem DOM-Knoten), können Sie immer noch tun (ich bin mit
onload
als ein Beispiel, aber auch andere Optionen sind verfügbar füronload
):oder, zur Vermeidung der Verschmutzung der globalen namespace (und wahrscheinlich die Begegnung mit Namensraum-Kollisionen), die mithilfe des import - /export-IIFE-pattern:
InformationsquelleAutor der Antwort John Dvorak
Können Sie attachEvent(ie8) und addEventListener statt
InformationsquelleAutor der Antwort karaxuna
Grundsätzlich gibt es zwei Wege
speichern, wird der Vorherige Wert von
window.onload
so Ihren code nennen kann, der vorherigen handler, falls vorhanden, die vor oder nach der Ausführung Ihres Codesmithilfe der
addEventListener
Ansatz (der natürlich Microsoft nicht mag und erfordert, dass Sie verwenden Sie einen anderen Namen).Die zweite Methode wird Ihnen ein wenig mehr Sicherheit, wenn ein anderes script verwenden will
window.onload
und tut es, ohne zu denken, um die Zusammenarbeit, sondern die wichtigste Voraussetzung für Javascript ist, dass alle Skripte, die kooperieren, wie Sie versuchen zu tun.Beachten Sie, dass ein schlechtes Drehbuch, das nicht speziell für die Arbeit mit anderen unbekannten Skripten werden immer in der Lage zu brechen eine Seite, zum Beispiel von messing mit Prototypen, durch die Verseuchung des globalen Namespaces oder durch Beschädigung der dom.
InformationsquelleAutor der Antwort 6502
Könnte dies eine beliebte option, aber manchmal sind die scripts am Ende wird verteilt in den verschiedenen Blöcken, in diesem Fall habe ich festgestellt, dass dies ein "quick fix",
dann woanders...
aktualisieren Sie die onload-Funktion und Kette wie erforderlich
InformationsquelleAutor der Antwort Daniel