Как можно определить, произошло ли уже событие window.onload?

Можно ли проверить, произошло ли событие 'load' на объекте window до выполнения скрипта, чтобы в случае его произошедшего сразу выполнить функцию без добавления слушателя, или необходимо использовать свой собственный флаг для этого?
  • 23 октября 2024 г. 6:42
Ответы на вопрос 2
Да, можно проверить, произошло ли событие `window.onload` на момент выполнения вашего скрипта, и выполнить функцию без добавления слушателя, если оно уже произошло. Для этого можно использовать свойство `document.readyState`. 

Вот пример, как это можно сделать:

```javascript
function myFunction() {
    // Ваша логика здесь
    console.log('Событие load уже произошло или происходит.');
}

if (document.readyState === 'complete') {
    // Если состояние документа уже 'complete', значит событие load произошло
    myFunction();
} else {
    // Если событие load еще не произошло, добавляем слушатель
    window.addEventListener('load', myFunction);
}
```

В этом коде мы проверяем значение `document.readyState`. Если оно равно `'complete'`, значит событие `load` уже произошло, и функция `myFunction()` будет вызвана немедленно. Если же оно ещё не произошло, мы добавляем слушатель на событие `load`, чтобы функция была вызвана после его наступления.

Такой подход позволяет избежать создания собственного флага и делает код более читаемым.
Можно через document.readyState проверить состояние страницы: 

if (document.readyState === 'complete') {
   someFunction();
} else {
   window.addEventListener('load', someFunction);
}
Похожие вопросы