我只是用Javascript加载屏幕,我想知道它必须放在哪个HTML文档部分。我的意思是在关闭标签内部或之前???有些文件说它必须放在上面,因为它必须在任何内容之前加载,但它似乎运行良好,即使我之前说过。
你能告诉我HTML文档的哪一部分“必须”或“更好”放置脚本? “延迟”或“没有延迟”的情况有区别吗?
window.addEventListener('load', function () {
document.querySelector('#js-loading').classList.add('hide');
});
.loading {
opacity: 1;
transition-property: visibility, opacity;
transition-duration: 0.2s;
}
.loading.hide {
visibility: hidden;
opacity: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="css/style.css">
<script src="js/script.js"></script> //Position A ???
<script src="js/script.js" defer></script> //Position A with defer???
</head>
<body>
<div class="loading" id="js-loading">
<div class="loading-img"><img src="images/loading.svg" alt=""></div>
</div>
<div>content</div>
<script src="js/script.js"></script> //Position B ???
<script src="js/script.js" defer></script> //Position B with defer???
</body>
</html>
文档(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)说的是defer
属性:
此布尔属性设置为向浏览器指示在解析文档之后但在触发DOMContentLoaded之前要执行脚本。
具有defer属性的脚本将阻止DOMContentLoaded事件触发,直到脚本加载并完成评估。
如果没有defer
属性,脚本将立即加载。
但无论如何并且独立于脚本标记放置,脚本将在触发load
事件之前执行,因此每个位置都适用于脚本,这会为load
事件添加事件侦听器。
有趣的是,我会将它们放在头部,因为它更干净,特别是如果你身体部位有很多内容。
您可以使用document.readyState API来了解文档何时完全加载。
您可以参考此答案以获得更多见解。