The DOMContentLoaded
event is fired when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event load
should be used only to detect a fully-loaded page. It is an incredibly common mistake to use load
where DOMContentLoaded
would be much more appropriate, so be cautious.
If you want the DOM to get parsed as fast as possible after the user has requested the page, you could make your JavaScript asynchronous and optimize loading of stylesheets. If loaded as usual, stylesheets slow down DOM parsing as they're loaded in parallel, "stealing" traffic from the main html document.
Property | Type | Description |
---|---|---|
target Read only
| EventTarget | The event target (the topmost target in the DOM tree). |
type Read only
| DOMString | The type of event. |
bubbles Read only
| Boolean | Whether the event normally bubbles or not. |
cancelable Read only
| Boolean | Whether the event is cancellable or not. |
<script> document.addEventListener("DOMContentLoaded", function(event) { console.log("DOM fully loaded and parsed"); }); </script>
<script> document.addEventListener("DOMContentLoaded", function(event) { console.log("DOM fully loaded and parsed"); }); for(var i=0; i<1000000000; i++) {} // this synchronous script is going to delay parsing of the DOM. So the DOMContentLoaded event is going to launch later. </script>
function doSomething() { console.info("DOM loaded"); } // `DOMContentLoaded` may fire before your script has a chance to run, so check before adding a listener if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", doSomething); } else { // `DOMContentLoaded` already fired doSomething(); }
https://html.spec.whatwg.org/#the-end:event-domcontentloaded
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'DOMContentLoaded' in that specification. | Living Standard | |
HTML5 The definition of 'DOMContentLoaded' in that specification. | Recommendation |
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | 1.0[1] | (Yes) | 1.0 (1.7 or earlier)[1] | 9.0[2] | 9.0 | 3.1[1] |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes)[1] | (Yes) | 1.0 (1)[1] | ?[2] | (Yes) | (Yes)[1] |
[1] Bubbling for this event is supported by at least Gecko 1.9.2, Chrome 6, and Safari 4.
[2] Internet Explorer 8 supports the readystatechange
event, which can be used to detect when the DOM is ready. In earlier versions of Internet Explorer, this state can be detected by repeatedly trying to execute document.documentElement.doScroll("left");
, as this snippet will throw an error until the DOM is ready.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded