The load
event is fired when the whole page has loaded, including all dependent resources such as stylesheets, scripts, iframes, and images. This is in contrast to DOMContentLoaded
, which is fired as soon as the page DOM has been loaded, without waiting for resources to finish loading.
This event is not cancelable and does not bubble.
Note: All events named load
will not propagate to Window
, even with bubbles
initialized to true
. To catch load
events on the window
, that load
event must be dispatched directly to the window
.
Note: The load
event that is dispatched when the main document has loaded is dispatched on the window
, but has two mutated properties: target
is document
, and path
is undefined
. These two properties are mutated due to legacy conformance.
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener("load", (event) => {});
onload = (event) => {};
Log a message when the page is fully loaded:
window.addEventListener("load", (event) => {
console.log("page is fully loaded");
});
The same, but using the onload
event handler property:
window.onload = (event) => {
console.log("page is fully loaded");
};
HTML
<div class="controls">
<button id="reload" type="button">Reload</button>
</div>
<div class="event-log">
<label for="eventLog">Event log:</label>
<textarea
readonly
class="event-log-contents"
rows="8"
cols="30"
id="eventLog"></textarea>
</div>
JavaScript
const log = document.querySelector(".event-log-contents");
const reload = document.querySelector("#reload");
reload.addEventListener("click", () => {
log.textContent = "";
setTimeout(() => {
window.location.reload(true);
}, 200);
});
window.addEventListener("load", (event) => {
log.textContent += "load\n";
});
document.addEventListener("readystatechange", (event) => {
log.textContent += `readystate: ${document.readyState}\n`;
});
document.addEventListener("DOMContentLoaded", (event) => {
log.textContent += `DOMContentLoaded\n`;
});
Result