@mvr1976
Учу html, css, js

Почему не открывается модальное окно по событию DOMContentLoaded?

Добрый день!
Есть страница с модальным окном, оно открывается по событию DOMContentLoaded:
<script>
            function showModalWin() { 
                var darkLayer = document.createElement('div'); 
                darkLayer.id = 'shadow'; 
                document.body.appendChild(darkLayer); 
 
                var modalWin = document.getElementById('popupWin'); 
                modalWin.style.display = 'block'; 
 
                darkLayer.onclick = function () { 
                    darkLayer.parentNode.removeChild(darkLayer); 
                    modalWin.style.display = 'none';
                    return false;
                };
            }
        document.addEventListener("DOMContentLoaded", showModalWin);   
        </script>
, т.е. при загрузке страницы.
Но когда я загружаю ее переходя по ссылке с другой страницы:
<a href = "pomodoro-modalwind.html"><img src="images/printscreen1.jpg" alt=""></a>
, переход происходит, но для открытия модального окна нужно нажать на ссылку "вызвать окно".
Ссылка на странице была, но она закомментирована:
<!-- <a href = "#" onclick="showModalWin()">Вызвать окно</a> -->

Обработчик не срабатывает. Страницу перезагружал, по колесу пинал, капот открывал. В чем может быть дело?
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 1
vawsan
@vawsan
Frontend Developer
Может не работать в IE
document.addEventListener("DOMContentLoaded", showModalWin);

Кроссбраузерная версия для из кода jQuery:
if ( document.addEventListener ) {
        // Use the handy event callback
        document.addEventListener( "DOMContentLoaded", function(){
            document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
            jQuery.ready();
        }, false );

    // If IE event model is used
    } else if ( document.attachEvent ) {
        // ensure firing before onload,
        // maybe late but safe also for iframes
        document.attachEvent("onreadystatechange", function(){
            if ( document.readyState === "complete" ) {
                document.detachEvent( "onreadystatechange", arguments.callee );
                jQuery.ready();
            }
        });
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы