在任何情况下都不能触发DOMContentLoaded事件吗?

时间:2016-10-09 15:14:47

标签: javascript

例如,此类链式事件不起作用,因为事件只会被触发一次。

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?');
});

我已经尝试了这个并且它有效,但我的问题是,如果有任何情况,它不会,如果有任何保证,它将被解雇至少一次,也在离线。

1 个答案:

答案 0 :(得分:1)

不,只要包含DOMContentLoaded处理程序的脚本在</body>之前的文档中,而不是在嵌套之类的其他事件处理程序中,就不会出现无效的情况。 <{1}}处理程序或DOMContentLoaded处理程序,它始终有效。

不确定“离线”是什么意思,但只要文档可以获取并加载,无论是否在线,事件都会触发?

相关问题