Опубликовано: 25.06.2010 Последняя правка: 10.12.2015
HTMLXHTML
IEChromeFireFoxOperaSafari

Атрибут defer

Атрибут defer, тега <SCRIPT>, откладывает выполнение скрипта до полной загрузки страницы и сообщает браузеру, что данный скрипт не используется для генерации содержимого HTML-документа (не используется метод document.write()). То есть скрипт с defer не только сам не будет выполнен, но и другие скрипты не смогут использовать его содержимое пока страница полностью не загрузится. Данный атрибут играет роль булевой переменной.

В основном атрибут defer применяется в тех случаях, когда самому скрипту для работы необходимы данные, расположенные ниже него в HTML-коде (сверху вниз, слева направо), то есть которые на момент объявления скрипта еще не сформированы браузером. Единственный минус defer — он поддерживается только IE.

Будьте внимательны с атрибутом defer. Если вы примените его для скрипта, содержащего метод document.write(), то могут возникать непредвиденные ошибки. В некоторых случаях браузер успешно их исправляет, но не всегда.

Булева переменная — это переменная, которая может иметь всего два значения: true или false (истина или ложь). В нашем случае присутствие defer является истиной (выполнение отложено), а его отсутствие - ложью (выполняется как обычно).

Значения

Атрибут сам играет роль значения.

Значение по умолчанию: Если defer отсутствует, то выполнение скрипта не будет отложено.

Синтаксис

<script type="значение" defer>...</script>

Обязательный атрибут: нет.

Пример HTML: применение атрибута defer

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>seodon.ru - Тег SCRIPT, атрибут defer</title>
 </head>
 <body>
  <!-- Если убрать defer, то скрипт не будет работать -->
  <script type="text/javascript" defer>
   var sum = document.forms[0].elements.length;
   alert("Элементов в форме: " + sum);
  </script>

  <form action="files/questions.php">
   <p><input type="text" name="name" value="Ваше имя"></p>
  </form>
 </body>
</html>

Результат примера

Поддержка версиями HTML

Версия:HTML 4.01HTML 5XHTML 1.0XHTML 1.1
Поддержка:ДаДаДаДа

Поддержка браузерами

Браузер:Internet ExplorerGoogle ChromeMozilla FirefoxOperaSafari
Версия:6.0 и выше2.0 и выше2.0 и выше9.2 и выше3.1 и выше
Поддержка:ДаНетНетНетНет