我应该在哪里将JavaScript的加载屏幕脚本放在HTML文档上?

问题描述 投票:0回答:2

我只是用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>
javascript
2个回答
1
投票

文档(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)说的是defer属性:

此布尔属性设置为向浏览器指示在解析文档之后但在触发DOMContentLoaded之前要执行脚本。

具有defer属性的脚本将阻止DOMContentLoaded事件触发,直到脚本加载并完成评估。

如果没有defer属性,脚本将立即加载。

但无论如何并且独立于脚本标记放置,脚本将在触发load事件之前执行,因此每个位置都适用于脚本,这会为load事件添加事件侦听器。

有趣的是,我会将它们放在头部,因为它更干净,特别是如果你身体部位有很多内容。


1
投票

您可以使用document.readyState API来了解文档何时完全加载。

您可以参考此答案以获得更多见解。

https://stackoverflow.com/a/44715040/7181668

© www.soinside.com 2019 - 2024. All rights reserved.