正如该线程中所述:window.onload 与 $(document).ready() https://stackoverflow.com/questions/3698200/window-onload-vs-document-ready. The window.onload
应该晚于$(document).ready()
但在这个简单的代码中,日志将显示onload
事件是在就绪事件之前执行的吗?我在这里缺少什么?
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<h1>A Simple Site</h1>
<script>
$(document).ready(function() {
console.log("ready event fired");
})
window.onload = function() {
console.log("onload event fired");
}
</script>
</body>
</html>
问题不在于事件的顺序。它使用围绕本机 DOM 事件的 jQuery 包装器。如果你尝试原生DOMContentLoaded
你会发现它总是在之前运行window.onload
。但是 jQuery 事件$(document).ready
几毫秒后DOMContentLoaded
,在某些情况下可能是在之后window.onload
也是如此,特别是如果页面没有太多需要加载的内容(如下面的代码所示)。这是由于 jQuery 实现造成的延迟。
如果您取消代码中 iframe 的注释,则加载需要一些时间,这会导致window.onload
被推迟,所以$(document).ready
会先来的。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>
<h1>A Simple Site</h1>
<!-- <iframe src="http://stackoverflow.com"></iframe> -->
<script>
$(document).ready(function() {
console.log("jQuery ready");
})
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM ready");
});
window.onload = function() {
console.log("DOM loaded");
}
</script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)