Was ist der Unterschied zwischen DOMContentLoaded
und load
Ereignissen?
javascript
browser
Viktor
quelle
quelle
Antworten:
Aus dem Mozilla Developer Center :
quelle
Das
DOMContentLoaded
Ereignis wird ausgelöst, sobald die DOM-Hierarchie vollständig erstellt wurde. Dasload
Ereignis führt dies aus, wenn alle Bilder und Unterrahmen vollständig geladen wurden.DOMContentLoaded
funktioniert auf den meisten modernen Browsern,jedoch nicht auf IEeinschließlich IE9 und höher. Es gibt einige Problemumgehungen , um dieses Ereignis in älteren IE-Versionen nachzuahmen, wie die in der jQuery-Bibliothek verwendeten, die das IE-spezifischeonreadystatechange
Ereignis anhängen .quelle
Sehen Sie den Unterschied selbst:
DEMO
Von Microsoft IE
Aus dem Mozilla Developer Network
quelle
DOMContentLoaded
gewährleistet , dass alle Skripte (einschließlich defer / async) geladen worden sind ? Über Skripte wird hier nichts gesagt: developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoadedDOMContentLoaded
==window.onDomReady()
Load
==window.onLoad()
Siehe: http://learn.jquery.com/using-jquery-core/document-ready/
quelle
domContentLoaded : Markiert den Punkt, an dem sowohl das DOM bereit ist als auch keine Stylesheets vorhanden sind, die die JavaScript-Ausführung blockieren. Dies bedeutet, dass wir jetzt (möglicherweise) den Renderbaum erstellen können. Viele JavaScript-Frameworks warten auf dieses Ereignis, bevor sie ihre eigene Logik ausführen. Aus diesem Grund erfasst der Browser die Zeitstempel EventStart und EventEnd, damit wir verfolgen können, wie lange diese Ausführung gedauert hat.
loadEvent : Als letzten Schritt beim Laden jeder Seite löst der Browser ein "Onload" -Ereignis aus, das zusätzliche Anwendungslogik auslösen kann.
Quelle
quelle
Hier ist ein Code, der für uns funktioniert. Wir haben festgestellt, dass MSIE ein Hit und Miss
DomContentLoaded
ist. Es scheint eine gewisse Verzögerung zu geben, wenn keine zusätzlichen Ressourcen zwischengespeichert werden (bis zu 300 ms basierend auf unserer Konsolenprotokollierung), und es wird zu schnell ausgelöst, wenn sie zwischengespeichert werden. Also haben wir auf einen Fallback für MISE zurückgegriffen. Sie möchten diedoStuff()
Funktion auch auslösen , unabhängig davon, ob sieDomContentLoaded
vor oder nach Ihren externen JS-Dateien ausgelöst wird .quelle