- Document: DOMContentLoaded event
- Примеры
- Основное применение
- Отложенный DOMContentLoaded
- Проверка того, завершена ли загрузка
- Живые примеры
- HTML
- JS
- Result
- Спецификации
- Браузерная совместимость
- Смотрите также
- Found a content problem with this page?
- MDN
- Support
- Our communities
- Developers
- DOMContentLoaded
- Ускорение работы
- Основная информация
- Свойства
- Пример
- Поддержка браузерами
- Связанные события
- Found a content problem with this page?
- Javascript дождаться полной загрузки страницы
Document: DOMContentLoaded event
Событие DOMContentLoaded запускается когда первоначальный HTML документ будет полностью загружен и разобран, без ожидания полной загрузки таблиц стилей, изображений и фреймов.
Всплытие | да |
---|---|
Отменяемый | Да (хотя указано как простое событие, которое не может быть отменено) |
Интерфейс | Event |
Свойство обработчика событий | нет |
Разные события, load , должны быть использованы только для обнаружения полностью загруженной страницы. Это распространённая ошибка в использовании load , там где DOMContentLoaded было бы более уместным.
Синхронный JavaScript останавливает разбор DOM. Если вы хотите что бы DOM был разобран как можно быстрее после того как пользователь запросит страницу, вы должны сделать ваш JavaScript асинхронным and оптимизировать загрузку таблиц стилей. Если загружать как обычно, таблицы стилей тормозят разбор DOM так как они загружаются параллельно, «крадя» трафик у основного HTML документа.
Примеры
Основное применение
.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">Reloadbutton> div> div class="event-log"> label>Event log:label> textarea readonly class="event-log-contents" rows="8" cols="30">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; >
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
Спецификации
Браузерная совместимость
BCD tables only load in the browser
Смотрите также
Found a content problem with this page?
This page was last modified on 17 июл. 2023 г. by MDN contributors.
Your blueprint for a better internet.
MDN
Support
Our communities
Developers
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.
DOMContentLoaded
Событие DOMContentLoaded происходит когда весь HTML был полностью загружен и пройден парсером, не дожидаясь окончания загрузки таблиц стилей, изображений и фреймов. Значительно отличающееся от него событие load (en-US) используется для отслеживания только полностью загруженной страницы. Широко распространённой ошибкой является использование load (en-US) в ситуации когда DOMContentLoaded является более подходящим, будьте внимательны.
Примечание: Синхронный JavaScript останавливает парсинг DOM.
Примечание: Существуют различные библиотеки, как общего назначения так и специализированные, предлагающие кросс-браузерные методы, позволяющие определить, что DOM готов к использованию.
Ускорение работы
Если вы хотите чтобы DOM был пройден парсером насколько возможно быстро, сразу после запроса пользователем страницы, вы можете попробовать выполнять JavaScript асинхронно и оптимизировать загрузку таблиц стилей которые обычно замедляют загрузку документа поскольку загружаясь одновременно «крадут» трафик у основного документа.
Основная информация
Да (несмотря на то, что в спецификации указано как простое событие, которое не является отменяемым)
Свойства
Свойство | Тип | Описание |
---|---|---|
target Только для чтения | EventTarget | The event target (the topmost target in the DOM tree). |
type Только для чтения | DOMString | Тип события. |
bubbles Только для чтения | Boolean | Whether the event normally bubbles or not. |
cancelable Только для чтения | Boolean | Возможно ли отменить событие. |
Пример
Поддержка браузерами
BCD tables only load in the browser
Связанные события
Found a content problem with this page?
This page was last modified on 4 дек. 2022 г. by MDN contributors.
Your blueprint for a better internet.
Javascript дождаться полной загрузки страницы
315
310
8065
433
7134
18