Document: DOMContentLoaded event
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
СобÑÑие DOMContentLoaded запÑÑкаеÑÑÑ ÐºÐ¾Ð³Ð´Ð° пеÑвонаÑалÑнÑй HTML докÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð³ÑÑжен и ÑазобÑан, без Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð¹ загÑÑзки ÑÐ°Ð±Ð»Ð¸Ñ ÑÑилей, изобÑажений и ÑÑеймов.
| ÐÑплÑÑие | да |
|---|---|
| ÐÑменÑемÑй | Ðа (Ñ Ð¾ÑÑ Ñказано как пÑоÑÑое ÑобÑÑие, коÑоÑое не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñменено) |
| ÐнÑеÑÑÐµÐ¹Ñ | Event |
| СвойÑÑво обÑабоÑÑика ÑобÑÑий | Ð½ÐµÑ |
СÑÑеÑÑвÑÐµÑ Ð´ÑÑгое ÑобÑÑие â load, коÑоÑое ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑеделениÑ, ÑÑо ÑÑÑаниÑа полноÑÑÑÑ Ð·Ð°Ð³ÑÑжена. РаÑпÑоÑÑÑанÑнной оÑибкой ÑвлÑеÑÑÑ Ð¸ÑполÑзование load вмеÑÑо DOMContentLoaded.
ÐÑимеÑÑ
>ÐÑновное пÑименение
document.addEventListener("DOMContentLoaded", (event) => {
console.log("DOM полноÑÑÑÑ Ð·Ð°Ð³ÑÑжен и ÑазобÑан");
});
ÐÑложеннÑй DOMContentLoaded
<script>
document.addEventListener("DOMContentLoaded", (event) => {
console.log("DOM полноÑÑÑÑ Ð·Ð°Ð³ÑÑжен и ÑазобÑан");
});
for (let i = 0; i < 1000000000; i++) {} // ÐÑÐ¾Ñ ÑинÑ
ÑоннÑй ÑкÑÐ¸Ð¿Ñ Ð¾ÑкладÑÐ²Ð°ÐµÑ ÑÐ°Ð·Ð±Ð¾Ñ DOM,
// Ñак ÑÑо ÑобÑÑие DOMContentLoaded бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑено позже.
</script>
ÐÑовеÑка Ñого, завеÑÑена ли загÑÑзка
DOMContentLoaded Ð¼Ð¾Ð¶ÐµÑ ÑÑабоÑаÑÑ Ð´Ð¾ Ñого, как Ð²Ð°Ñ ÑкÑÐ¸Ð¿Ñ Ð±ÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑен, поÑÑÐ¾Ð¼Ñ ÑазÑмно ÑÑо пÑовеÑиÑÑ, пеÑед добавлением обÑабоÑÑика.
function doSomething() {
console.info("DOM загÑÑжен");
}
if (document.readyState === "loading") {
// ÐагÑÑзка еÑÑ Ð½Ðµ законÑилаÑÑ
document.addEventListener("DOMContentLoaded", doSomething);
} else {
// `DOMContentLoaded` Уже ÑÑабоÑал
doSomething();
}
ÐивÑе пÑимеÑÑ
HTML
<div class="controls">
<button id="reload" type="button">Reload</button>
</div>
<div class="event-log">
<label>Event log:</label>
<textarea readonly class="event-log-contents" rows="8" cols="30"></textarea>
</div>
JS
const log = document.querySelector(".event-log-contents");
const reload = document.querySelector("#reload");
reload.addEventListener("click", () => {
log.textContent = "";
window.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`;
});
Result
СпеÑиÑикаÑии
| Specification |
|---|
| HTML > # stop-parsing > |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
- СобÑÑÐ¸Ñ ÑвÑзаннÑе Ñ:
load,readystatechange,beforeunload,unload - ÐÑо ÑобÑÑие
WindowнаÑеленное на:DOMContentLoaded