Где я должен разместить сценарий экрана загрузки JavaScript в HTML-документе?

Я только что сделал загрузочный экран с помощью 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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
120
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Документы (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script) говорят об атрибуте defer:

This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing DOMContentLoaded.

Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has loaded and finished evaluating.

Без атрибута defer скрипты загружались бы сразу.

Но в любом случае, независимо от размещения тега script, сценарии будут выполняться до того, как будет запущено событие load, поэтому любое размещение подходит для сценария, который добавляет прослушиватель событий к событию load.

Что касается удовольствия, я бы поместил их в часть головы, так как это намного чище, особенно если у вас много контента в части тела.

Итак, каждое размещение в порядке. Также ваш последний комментарий был полезен для меня. Большое спасибо!!

abms 15.04.2019 13:43

Вы можете использовать API документ.readyState, чтобы узнать, когда документ полностью загружен.

Вы можете обратиться к этому ответу для получения дополнительной информации.

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

Я не знал такого способа проверки. Так интересно! Я действительно ценю вас.

abms 15.04.2019 13:47

Другие вопросы по теме