2013-09-03 7 views
3

Является ли хорошей практикой хранение связанной информации в теге HTML?Хранение данных в тегах HTML как пользовательские атрибуты

$("#my_div").append("<span id='info' boo='foo'/>"); 
$("#info").attr("boo"); 

Я столкнулся с такой техникой (и немного позаимствовал) в TALZPT), где вы могли бы использовать tal:attributes заявление, чтобы изменить HTML метки (например, передавая значение переменной boo от бэкэнда быть вынесены в итоговый документ в качестве значения атрибута):

<span id='info' tal:attributes='boo view/boo'> 

результат:

<span id='info' boo='foo'> 

Будет ли эта техника ломать документ когда-нибудь, или это безопасно по спецификации?

ответ

12

Правильный способ сделать это состоит в использовании данных- * атрибуты:

http://www.w3.org/TR/2011/WD-html5-20110525/elements.html#embedding-custom-non-visible-data-with-the-data-attributes

тангенциально, JQuery имеет специальный метод для работы с ними, а также. Например:

<p id='string' data-user_name='thedude'></p> 
$('#string').data('user_name') => "thedude" 
typeof $('#string').data('name') => "string" 

<p id='number' data-user_id='12345'</p> 
typeof $('#number').data('user_id') => "number" 

<p id='boolean' data-user_is_active='true'></p> 
typeof $('#boolean').data('user_is_active') => "boolean" 

<p id = 'json' data-user='{"name": "the dude", "id": "12345"}'></p> 
typeof $('#json').data('user') => "object" 
// embedding JSON is extremely useful in my experience 
+0

«Было бы неуместно, однако, чтобы пользователь использовал универсальное программное обеспечение, не связанное с этим музыкальным сайтом, для поиска дорожек определенной длины, просмотрев эти данные. Это связано с тем, что эти атрибуты предназначены для использования собственные сценарии сайта и не являются общим механизмом расширения для общедоступных метаданных ». Что? Разве это W3C говорит мне, что делать и что делать не как бесплатный веб-пользователь? – Niavlys

1

w3.org позволяет в HTML5 использовать пользовательский пользовательские данные в HTML-теги;

Смотрите раздел:

3.2.3.9 Embedding custom non-visible data with the data-* attributes

Атрибут пользовательских данных является атрибут не в пространстве имен, чье имя начинается с строкой «data-», имеет по крайней мере один символ после дефиса [...]

Пример:

<ol> 
<li data-length="2m11s">Beyond The Sea</li> 
... 
</ol> 

Итак, я скажу, что это приемлемая практика для HTML5.

+1

Риски этой техники нарушают документ ниже. Возможно, у вас проблемы со старыми версиями HTML или браузеров, но, возможно, не в будущем. На мой взгляд, эта практика позволяет лучше использовать семантическую информацию для управления данными, прозрачную для пользователя. Имея это в виду, я думаю, что w3c расширит практику, а не запретит ее. – Lan