Часто бывают ситуации, когда полезно добавить пользовательские данные в тег HTML. В моей недавней серии статей « Как создать автоматически расширяемый плагин Textarea jQuery» я присвоил имя «expand» атрибуту класса textarea
По мере того как мы (возможно) движемся к семантической сети, и микроформаты, и RDFa добавляют метаданные к атрибутам тегов, чтобы повысить смысл информации на веб-странице.
Пользовательские данные могут не отображаться браузером, но они удобны в качестве программного хука. Большинство разработчиков знают, что пользовательские атрибуты не существуют в HTML4 …
<!-- this is not valid -->
<div myattribute="mydata"></div>
Браузеры обычно не будут жаловаться, но вы не можете быть абсолютно уверены, как будет обрабатываться атрибут. Некоторые добавят его в DOM, а некоторые могут полностью его игнорировать. Ваша страница также не пройдет проверку, что затруднит обнаружение реальных ошибок.
XHTML позволяет указывать пользовательские теги и атрибуты. Однако этот процесс включает в себя разработку собственного DTD (определение типа документа), которое является излишним, когда вам просто нужно добавить данные для простого виджета JavaScript.
К сожалению, существует распространенное заблуждение, что атрибут rel не используется и может быть применен в любой ситуации, требующей пользовательских данных. Не делайте этого предположения. В HTML4.01 и XHTML1.0 «rel» может использоваться только как атрибут для тегов a
link
Ваш код будет недействительным, если вы назначите его в другом месте.
Кроме того, ‘rel’ описывает отношение между текущим документом и документом или якорем, указанным в атрибуте href. Это отношение может быть одного или нескольких из следующих типов: альтернативный, таблица стилей, начало, следующий, предыдущий, содержимое, индекс, глоссарий, авторское право, глава, раздел, подраздел, приложение, справка и закладка. В лучшем случае ваши пользовательские данные будут игнорироваться. В худшем случае, будущая версия HTML может определить ваши данные как указанный тип ссылки и обработать ваш атрибут нежелательным образом.
Спецификация HTML5 немного отличается. Он также разрешает атрибуты rel для тегов area
Тем не менее, HTML5 также предлагает нам пользовательский атрибут данных — любое имя, начинающееся со строки «data-», например
<!-- HTML5 custom data attribute -->
<span data-speed-mps="186282">speed of light</span>
К сожалению, спецификация HTML5 неполна, и поддержка браузера в лучшем случае неоднородна.
Итак, пока HTML5 не станет реальностью, какие теги или атрибуты следует использовать для пользовательских метаданных? Ответ: самый подходящий, который вы можете найти . Например, вы можете определить описание для изображения, которое появляется во всплывающей подсказке на основе JavaScript — атрибут longdesc может быть идеальным.
В качестве альтернативы используйте «класс», если соответствующий атрибут недоступен. Большинство элементов HTML поддерживают атрибут класса, и несколько имен могут быть разделены пробелами.