@Stas2021

Почему скрипт js срабатывает с запозданием?

Добрый день!

Столкнулся с такой ситуацией.

Есть страница:
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script src="js/main.js"></script>
</head>

<body>
<div id="wr" class="no_js_wr"></div>
</body>


Стили в css/style.css:
.no_js_wr{background-color:#FFFFFF;}
.js_wr{background-color:#d2d2d2;}


Скрипт js/main.js:
(function (w, d) {w.addEventListener("load",loadBeg);

        function loadBeg() {
               d.getElementById("wr").classList.remove("no_js_wr");
               d.getElementById("wr").classList.add("js_wr");
        }

}(window, document));


Эта замена нужна, чтобы при отключенном пользователем js было одно, а при включенном - другое.

Происходит следующее - когда в браузере (например, Chrome - версия 90.0.4430.93) первый раз (после очистки истории браузера) загружается страница - браузер не успевает (????) удалить класс .no_js_wr и добавить .js_wr. Причем, такое впечатление, что браузер считает, что js отключен или скрипта нет. Через мгновение передумывает и выполняет скрипт.
Других скриптов на странице нет.

Если же обновить страницу в браузере или закрыть/открыть браузер - все нормально.

Может кто-нибудь объяснить - это нормально?
Или я выбрал принципиально неверный/устаревший способ как сделать страницу с учетом отключения js пользователем?

Спасибо!

Update:

Виновато событие Load, а точнее картинки, которые загружались.
Правильно было ждать в js DOMContentLoaded.
Большое спасибо WbICHA!
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы