[英]How do you determine the firing order of load and DOMContentLoaded events?
为什么下面的代码( JS Bin )以1,5,3,4的顺序启动? 为什么2根本不点火?
根据此问题的答案 ,“ 4”应在“ 5”之前触发。 警报的顺序并没有显示出来。 但是,如果将body和img onload处理程序更改为执行document.write
而不是alert
,则将显示5,这与该答案一致。
<!DOCTYPE html>
<html>
<head>
<script>
document.addEventListener("DOMContentLoaded", function() {
alert("1");
});
document.addEventListener("load", function() {
alert("2");
});
window.addEventListener("load", function() {
alert("3");
});
</script>
</head>
<body onload="alert('4')">
<h1>Hello World!</h1>
<img onload="alert('5')" src="https://developer.cdn.mozilla.net/media/redesign/img/logo_sprite.svg?2014-01" alt="Smiley face" width="42" height="42" />
</body>
</html>
加载所有图像后触发window / body onload。
加载事件在文档加载过程结束时触发。 至此,文档中的所有对象都在DOM中,并且所有图像,脚本,链接和子框架均已完成加载。
因此,应在触发图像加载后再加载窗口。
触发窗口/主体事件的顺序取决于您注册事件侦听器的时间
<!DOCTYPE html>
<html>
<head>
<script>
document.addEventListener("DOMContentLoaded", function() {
console.log("Head - DOMContentLoaded");
});
document.addEventListener("load", function() {
console.log("head - document load");
});
window.addEventListener("load", function() {
console.log("head - window load");
});
</script>
</head>
<body onload="console.log('BODY ONLOAD')">
<h1>Hello World!</h1>
<img onload="console.log('IMG ONLOAD')" src="https://developer.cdn.mozilla.net/media/redesign/img/logo_sprite.svg?2014-01" alt="Smiley face" width="42" height="42" />
<script>
document.addEventListener("DOMContentLoaded", function() {
console.log("END - DOMContentLoaded");
});
document.addEventListener("load", function() {
console.log("END - document load");
});
window.addEventListener("load", function() {
console.log("END - window load");
});
</script>
</body>
</html>
会导致
并非所有浏览器都支持document.load。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.