Атрибуты тегов в HTML5

Здравствуйте!
Пытаюсь понять возможность задания свободных атрибутов у тегов в HTML5.
Прямого запрета нигде пока не нашёл, но и явного разрешения тоже нет.

Атрибут data-* знаком, но интересует корректность такой, например, записи:
<tag anyAttr="value">/<tag>
Через JS вполне можно достучаться до тега: http://jsfiddle.net/j8GjS/

Есть какие-то "правоустанавливающие" документы? Все ли браузеры работают с кодом из примера? Какое действует правило для стандартов:
- разрешено всё, что не запрещено
- запрещено всё, что не разрешено

Заранее спасибо.
PS пока нашёл только: http://www.w3.org/TR/html-markup/syntax.html - прямого запрета нет
  • Вопрос задан
  • 3315 просмотров
Пригласить эксперта
Ответы на вопрос 4
mlnkv
@mlnkv
JavaScript Developer
на своей практике верстки и js разработки еще не встречался с проблемой использования нестандартных атрибутов и считаю что "разрешено всё, что не запрещено" (imho)
Ответ написан
Комментировать
В какой-то степени разрешено всё, что не запрещено, но нужно понимать последствия.
Например что будет если не писать кастомные атрибуты без префикса data-?
  • Документ будет считаться не валидным
  • В будушем при добавлении новых атрибутов могут возникнуть проблемы (например вы назвали свой атрибут content, а потом атрибут с таким же названием ввели в спеку как новый и означающий нечто совершенно иное)
  • У data- атрибутов более широкое DOM API для JavaScript
Ответ написан
Комментировать
Kaaboeld
@Kaaboeld
Web-разработчик
Немного проще: еще до html5 можно было использовать любые атрибуты, просто некоторые имели свои правила интерпретации как например href у a, интерпретировался как ссылка по onclick на некий путь(event), вы можете использовать любые атрибуты, но стоит учесть, что может возникнуть "конфликт" по спецификации. Почему использовать data? - "из коробки" хранение объектов и значений разных типов(формат json) при интерпретации, в остальных придется делать decode+"плюшки" чтобы отличить "1",1,true,TRUE и тд.
Ответ написан
Комментировать
stonedmind
@stonedmind
В спецификации W3C не указано других вариантов, кроме как data-*. Можно допустить, что поддержка кастомных аттрибутов без префикса "data-" - это неофициальная поддержка со стороны браузеров. Если работает - значит можно использовать, но если этого нету в стандартах, то не удивляйтесь, если ваша страница перестанет работать как вы ожидали.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы