Перейти к основному содержанию

JavaScript — DOMContentLoaded не работает

code

Допустим, у нас есть функция, которую мы путаемся выполнить после загрузки HTML страницы:

document.addEventListener('DOMContentLoaded', function () {
     console.log('DOM loaded!');
     myCode();
});

А она то работает, то не работает. На одних страницах выполняется без проблем, на других — тишина. Сам столкнулся.

Проблема, вероятно, в том, что событие DOMContentLoaded успевает происходить до того, как начнёт выполнение код, в котором находится наша функция. Мы подписываемся на событие DOMContentLoaded, когда уже структура документа загружена.

В этом случае поможет немного модифицированный код:

if (document.readyState !== 'loading') {
     console.log('DOM ready!');
     myCode();
} else {
    document.addEventListener('DOMContentLoaded', function () {
      console.log('DOM loaded!');
      myCode();
    });
}

Мне помогло.

Теги

 

Похожие материалы

BAT скрипт — скрыть вводимый пароль

Понадобилось модифицировать пакетный BAT скрипт таким образом, чтобы на экране не отображался ввод пароля. Планировалось демонстрировать работу скрипта на экране, при этом нужно было не светить вводимый пароль.

Теги

Drupal — размещение блока в произвольном месте статьи

Многие владельцы сайтов сталкиваются с необходимостью размещения дополнительных блоков в своих статьях. Это может быть рекламный блок или какое-то объявление. Или просто какое-то декоративное праздничное оформление сайта.

Теги