defer
является логическим атрибутом [HTML 4.01 spec] :
Некоторые атрибуты играют роль булевых переменных (например, атрибут
selected
для элементOPTION
). Их появление в начале тега элемента подразумевает, что значение атрибута «истинно». Их отсутствие подразумевает значение «false».[...]
В HTML логические атрибуты могут отображаться в минимизированной форме - значение атрибута появляется только в начале элемента тег. Таким образом,
selected
может быть задан путем записи:<OPTION selected>
вместо:
<OPTION selected="selected">
Авторы должны знать, что многие пользовательские агенты распознают только минимизированную форму логических атрибутов а не в полной форме.
Однако, если вы используете XHTML, вам нужно использовать вторую форму, поскольку XHTML следует синтаксису XML, где атрибуты всегда должны иметь значение.
2.4.2 Логические атрибуты
Число атрибутов - логические атрибуты. Наличие атрибута boolean для элемента представляет истинное значение, а отсутствие атрибута представляет собой ложное значение.
Если атрибут присутствует, его значение должно быть пустой строкой или значением, которое это ASCII-регистр, не учитывающий регистр, для канонического имени атрибута, без ведущего или конечного пробела.
, поэтому
defer
прав, и поэтомуdefer="defer"
иdefer="DeFeR"
иdefer=""
Поскольку вы ссылаетесь на HTML 4.01:
Это Логический атрибут . Обе формы являются правильными, но спецификация рекомендует использовать предыдущий .
Если вы использовали XHTML, то вы должны использовать более длинную версию .
HTML 5 также позволяет обе версии и удаляет рекомендацию для использования одного над другим (поскольку для совместимости с XHTML, который использовался как text / html, все современные браузеры могут обрабатывать оба синтаксиса ).
Асинхронные и отложенные атрибуты являются логическими атрибутами, указывающими, как должен выполняться сценарий. Атрибуты defer и async не должны указываться, если атрибут src отсутствует.
https://www.w3.org/TR/html5/scripting-1.html#attr-script -defer