document.readyState в JavaScript — стан завантаження


Загальний опис

Властивість readyState об'єкта Document в JavaScript надає інформацію про поточний стан завантаження документа. Ця властивість допомагає розробникам контролювати процес завантаження сторінки і виконувати відповідні дії в залежності від її стану. Основна суть readyState полягає в тому, щоб забезпечити можливість програмно перевіряти, чи завершено завантаження документа, чи все ще триває процес, а також чи виникли певні помилки або проблеми під час завантаження.

Основне застосування readyState полягає у керуванні виконанням скриптів, які пов'язані зі завантаженням документа, виконанням асинхронних запитів або взаємодією з DOM-елементами. Завдяки цій властивості розробники можуть запускати функції або виконувати інші дії тільки після того, як документ буде повністю завантажений.

Простий приклад

if (document.readyState === 'loading') {
    console.log('Документ ще завантажується...');
} else {
    console.log('Документ завантажено.');
}

У цьому прикладі виводиться повідомлення, яке вказує на те, чи документ ще завантажується чи вже завантажено. Це дозволяє виконувати певні дії, тільки коли документ готовий для маніпуляцій.

Використання разом з подіями

document.addEventListener('readystatechange', function() {
    if (document.readyState === 'complete') {
        console.log('Документ завантажено і готовий для використання.');
    }
});

У цьому прикладі додається обробник події, який викликається, коли змінюється readyState. Коли readyState стає рівним 'complete', виводиться повідомлення про те, що документ повністю завантажено.

автор: Bond

Порада

readyState може приймати два основні значення: loading, яке означає, що документ все ще завантажується, та "complete", яке вказує на те, що документ було повністю завантажено. Використання цієї властивості дозволяє реалізувати логіку, яка залежить від стану завантаження сторінки.

автор: Bond
Порада

Для виконання скриптів після повного завантаження документа, рекомендується використовувати перевірку readyState у комбінації з подією DOMContentLoaded. Це забезпечує, що ваш код виконається відразу після завантаження HTML, але перед завантаженням зовнішніх ресурсів, таких як зображення.

автор: Bond
Порада

У сценаріях, коли потрібно забезпечити взаємодію з елементами, які можуть бути додані до документа динамічно, важливо регулярно перевіряти readyState. Це допоможе уникнути ситуацій, коли скрипт намагається отримати доступ до елементів, які ще не були повністю завантажені або ініціалізовані.

автор: Bond

Синтаксис

Document.readyState

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 3.6 1 11 12 11
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

У цьому простому прикладі ми використовуємо властивість Document.readyState для перевірки, чи повністю завантажений документ. Це особливо корисно, коли потрібно виконати JavaScript-код відразу після завантаження сторінки, але перед завантаженням зображень або інших зовнішніх ресурсів.

document.addEventListener("DOMContentLoaded", function() {
  if (document.readyState === "complete") {
    console.log("Документ повністю завантажений і готовий до використання.");
  }
});
автор: Bond

У цьому складнішому прикладі ми використовуємо Document.readyState для визначення, коли документ перебуває у стані interactive, що означає, що DOM повністю завантажений і доступний для маніпуляцій, навіть якщо зовнішні ресурси, такі як зображення, можуть ще завантажуватися.

function addDynamicContent() {
  var newElement = document.createElement("p");
  newElement.textContent = "Це динамічно доданий контент.";
  document.body.appendChild(newElement);
}

if (document.readyState === "interactive" || document.readyState === "complete") {
  addDynamicContent();
} else {
  document.addEventListener("DOMContentLoaded", addDynamicContent);
}
автор: Bond

У цьому прикладі кнопка "Перевірити стан документа" дозволяє користувачу в будь-який момент отримати поточний стан завантаження документа. При натисканні на кнопку, обробник подій зчитує властивість Document.readyState і виводить її значення в параграф #stateResult.

HTML

<header>
  <h2 class="title">Document.readyState</h2>
  <p class="description">Повертає стан завантаження документа.</p>
</header>
<main>
  <div class="result">
    <button id="checkState">Перевірити стан документа</button>
    <p id="stateResult">Стан документа з'явиться тут...</p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

JS

document.getElementById('checkState').addEventListener('click', function () {
  var state = document.readyState;
  document.getElementById('stateResult').textContent = 'Стан документа: ' + state;
});
//# sourceURL=pen.js
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід