2016-10-09 2 views
1

Например, прикованные события такого рода не будут работать, потому что событие будет запущено только один раз.Может ли событие DOMContentLoaded не запускаться ни при каких обстоятельствах?

window.addEventListener('DOMContentLoaded', function() { 
    alert('This should show up'); 
    window.addEventListener('DOMContentLoaded', function() { 
    alert('This will never show up'); 
    }); 
}); 

Особенно мои сомнения в том случае, вы положили свои скрипты в нижней части HTML, так как они будут обрабатываться, когда DOM уже загружен. Более того, если перед вашим событием есть много вещей в вашем скрипте, потому что событие может быть запущено до того, как парсер достигнет инструкции addEventListener.

<!DOCTYPE html> 
<html> 
<head> 
    ... 
    <script src="myscript.js"></script> 
</body> 
</html> 

И JavaScript:

// myscript.js 
// ... many things ... 
window.addEventListener('DOMContentLoaded', function() { 
    alert('Will this always happen?'); 
}); 

Я попробовал это, и это работает, но мой вопрос, если есть случай, когда он не будет, и если есть какие-либо гарантии того, что он будет уволить хотя бы один раз, также в автономном режиме.

+0

Если ваш обработчик события прикреплен в первом теге ' 'будет срабатывать, а' 'не будет. – Kaiido

ответ

1

Нет, нет ни одного случая, когда это не будет работать, пока скрипт, содержащий обработчик DOMContentLoaded в документе, перед тем </body>, а не в других обработчиков событий, как вложенные DOMContentLoaded обработчиков или window.onload обработчиков, это всегда будет работать.

Не уверен, что вы подразумеваете под «офлайн», но до тех пор, пока документ может быть загружен и загружен, событие будет срабатывать, независимо от того, находится ли он в сети или нет?

+0

Пожалуйста, вы можете предоставить ссылку? (То, что я подразумевал под автономным режимом, заключается в том, что документ не загружается, то есть локальный файл). – germanfr

+0

Ссылки на методы JS обычно [MDN] (https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded). И да, 'DOMContentLoaded' работает одинаково с документом, загруженным из локального ресурса. – adeneo

+0

MDN говорит, что _event запускается, когда исходный HTML-документ полностью загружен и разобран. Мой вопрос больше, если событие может срабатывать, прежде чем добавить слушателя. Например, если он завершил разбор документа до того, как будет достигнут конец файла сценария, где я называю 'addEventListener'. – germanfr

Смежные вопросы