Die allgemeine Idee ist, dass window.onload ausgelöst wird, wenn das Fenster des Dokuments zur Präsentation bereit ist, und document.onload ausgelöst wird, wenn der DOM-Baum (erstellt aus dem Markup-Code im Dokument) abgeschlossen ist .
Im Idealfall ermöglicht das Abonnieren von DOM-Tree-Ereignissen Offscreen-Manipulationen über Javascript, wobei fast keine CPU-Last anfällt . Im Gegensatz dazu window.onload
kann das Feuern eine Weile dauern , wenn noch mehrere externe Ressourcen angefordert, analysiert und geladen werden müssen.
►Testszenario:
Um den Unterschied und zu beobachten , wie Sie Ihren Browser der Wahl implementiert die oben genannten Event - Handler , legen Sie einfach den folgenden Code innerhalb Ihres Dokuments - <body>
- tag.
<script language="javascript">
window.tdiff = []; fred = function(a,b){return a-b;};
window.document.onload = function(e){
console.log("document.onload", e, Date.now() ,window.tdiff,
(window.tdiff[0] = Date.now()) && window.tdiff.reduce(fred) );
}
window.onload = function(e){
console.log("window.onload", e, Date.now() ,window.tdiff,
(window.tdiff[1] = Date.now()) && window.tdiff.reduce(fred) );
}
</script>
►Ergebnis:
Hier ist das resultierende Verhalten, das für Chrome v20 (und wahrscheinlich die meisten aktuellen Browser) zu beobachten ist.
- Kein
document.onload
Ereignis.
onload
wird zweimal ausgelöst <body>
, wenn es innerhalb von deklariert wird , einmal, wenn es innerhalb von deklariert wird <head>
(wobei das Ereignis dann als fungiert document.onload
).
- Durch Zählen und Handeln in Abhängigkeit vom Status des Zählers können beide Ereignisverhalten emuliert werden.
- Alternativ können Sie den
window.onload
Ereignishandler innerhalb der Grenzen des HTML- <head>
Elements deklarieren .
►Beispielprojekt:
Der obige Code stammt aus der Codebasis ( index.html
und keyboarder.js
) dieses Projekts .
Eine Liste der Ereignishandler des Fensterobjekts finden Sie in der MDN-Dokumentation.
window
Ereignisse:onload
undDOMContentLoaded
. Anwendungsbeispiel:,window.addEventListener('DOMContentLoaded', callback)
. Ab Mitte 2019 kompatibel mit allen gängigen Browsern. ----- developer.mozilla.org/en-US/docs/Web/API/Window/… ------ developer.mozilla.org/en-US/docs/Web/API/Window/load_event