This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The readystatechange event is fired when the readyState attribute of a document has changed.
This event is not cancelable and does not bubble.
Use the event name in methods like addEventListener(), or set an event handler property.
addEventListener("readystatechange", (event) => { })
onreadystatechange = (event) => { }
A generic Event.
<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>
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 = `${log.textContent}load\n`;
});
document.addEventListener("readystatechange", (event) => {
log.textContent = `${log.textContent}readystate: ${document.readyState}\n`;
});
document.addEventListener("DOMContentLoaded", (event) => {
log.textContent = `${log.textContent}DOMContentLoaded\n`;
});
| Specification |
|---|
| HTML> # event-readystatechange> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
readystatechange_event |
9 | 12 | 4 | ≤12.1 | 5.1 | 18 | 4 | ≤12.1 | 5 | 1.0 | 4.4 | 5 |
DOMContentLoaded, load, beforeunload, unload
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Document/readystatechange_event