This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

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.

Примеры

Основное применение

js
document.addEventListener("DOMContentLoaded", (event) => { console.log("DOM полностью загружен и разобран"); }); 

Отложенный DOMContentLoaded

html
<script> document.addEventListener("DOMContentLoaded", (event) => { console.log("DOM полностью загружен и разобран"); }); for (let i = 0; i < 1000000000; i++) {} // Этот синхронный скрипт откладывает разбор DOM, // так что событие DOMContentLoaded будет запущено позже. </script> 

Проверка того, завершена ли загрузка

DOMContentLoaded может сработать до того, как ваш скрипт будет запущен, поэтому разумно это проверить, перед добавлением обработчика.

js
function doSomething() { console.info("DOM загружен"); } if (document.readyState === "loading") { // Загрузка ещё не закончилась document.addEventListener("DOMContentLoaded", doSomething); } else { // `DOMContentLoaded` Уже сработал doSomething(); } 

Живые примеры

HTML

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

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

Совместимость с браузерами

Смотрите также