Window: load event
{{APIRef}}
The load
event is fired when the whole page has loaded, including all dependent resources such as stylesheets, scripts, iframes, and images, except those that are loaded lazily.
This is in contrast to {{domxref("Document/DOMContentLoaded_event", "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 toWindow
, even withbubbles
initialized totrue
. To catchload
events on thewindow
, thatload
event must be dispatched directly to thewindow
.
[!NOTE] The
load
event that is dispatched when the main document has loaded is dispatched on thewindow
, but has two mutated properties:target
isdocument
, andpath
isundefined
. These two properties are mutated due to legacy conformance.
Syntax
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}
, or set an event handler property.
addEventListener("load", (event) => {});
onload = (event) => {};
Event type
A generic {{domxref("Event")}}
.
Examples
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");
};
Live example
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>
body {
display: grid;
grid-template-areas: "control log";
}
.controls {
grid-area: control;
display: flex;
align-items: center;
justify-content: center;
}
.event-log {
grid-area: log;
}
.event-log-contents {
resize: none;
}
label,
button {
display: block;
}
#reload {
height: 2rem;
}
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
{{ EmbedLiveSample('Live_example', '100%', '160px') }}
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
- Document readyState API
- Related events:
{{domxref("Document/DOMContentLoaded_event", "DOMContentLoaded")}}
{{domxref("Document/readystatechange_event", "readystatechange")}}
{{domxref("Window/beforeunload_event", "beforeunload")}}
{{domxref("Window/unload_event", "unload")}}