4. Основы JavaScript


4.6. Отложенные сценарии

В HTML 4.01 для элемента <script> определен атрибут defer, который указывает, что сценарий не будет изменять структуру страницы, а потому его можно безопасно выполнить после синтаксического анализа всей страницы. Атрибут defer сигнализирует браузеру, что загрузку сценария можно начать немедленно, но его выполнение следует отложить:

<!DOCTYPE html>
<html>
<head>
<title>Пример HTML-страницы</title>
<script type="text/javascript" defer src="examplel.js"></script>
<script type="text/javascript" defer src="example2.js"></script>

</head>

<body>
<!-- контент -->
</body>

</html>

Несмотря на то что в этом примере элементы <script> включены в элемент <head> документа, выполнение сценариев не начнется, пока браузер не получит закрывающий тег </html>.

В спецификации HTML 5 указано, что сценарии интерпретируются по порядку, так что первый отложенный сценарий выполняется перед вторым, однако в реальности требования спецификации не всегда соблюдаются, поэтому по возможности лучше включать в страницу только один отложенный сценарий.

Как уже отмечалось, атрибут defer поддерживается только для внешних файлов сценариев. Это уточнение было добавлено в HTML 5, так что браузеры, поддерживающие HTML 5 (включая Internet Explorer 8 и более поздних версий), игнорируют атрибут defer, если он задан для встроенного сценария.

В XHTML-документах указывайте атрибут defer как defer= "defer".