2015-09-02 4 views
4

Я знакомлюсь с AngularJS, и я заметил, что вы можете сделать свой код шаблона HTML5-совместимым, предварительно указав свои директивы на data-. (Например, data-ng-repeat="..." вместо ng-repeat="...".)Должны ли приложения AngularJS соответствовать требованиям HTML5?

Мой первый инстинкт должен был префикс всех моих директив как таковой, но я задавался вопросом: есть ли веские причины для этого? Есть ли подтвержденные случаи, когда браузеры не работают с неверными атрибутами HTML? Ввод data- перед тем, как все становится довольно утомительным, и делает HTML-шаблоны намного менее удобочитаемыми.

ответ

1

Имена атрибутов должны состоять из одного или нескольких отличных от символов пробела символов, U + 0000 NULL, U + 0022 кавычки ("), U + 0027 апострофа ('), ">"(U + 003E), Символы «/» (U + 002F) и «=» (U + 003D), управляющие символы и любые символы, которые не определены в Unicode. В синтаксисе HTML имена атрибутов, даже те, что используются для внешних элементов, могут быть записаны с любой смесью с низким и прописными буквами, которые являются ASCII чувствительны к регистру матч для имени атрибута.

http://www.w3.org/TR/html/syntax.html#attributes-0

Атрибуты пользовательских данных предназначены для хранения конфиденциальных данных на странице или приложении, для которых нет более подходящих атрибутов или элементов.

http://www.w3.org/TR/html5/dom.html#custom-data-attribute

После еще копания, я обнаружил, что часть для data-* атрибутов. Однако на самом деле он не говорит, что это «необходимо». Это больше похоже на «мы рекомендуем использовать его».

Afaik, атрибуты, которые не распознаются браузером, игнорируются, но все еще доступны с помощью метода объекта getAttribute объекта DOM и attributes. data-* обычно предпочтительны для семантики и удобства, особенно при использовании dataset.

На аналогичной ноте более ранние версии угловых даже recommends attribute name restrict для директив в качестве альтернативы имени элемента ограничивают совместимость с IE8. Обычно у директив есть пользовательские имена, которые должны быть индикатором того, что имена настраиваемых атрибутов в порядке.

+0

Я видел [много] (http://stackoverflow.com/questions/5032841/html5-custom-attributes-why-would-i-use-them) [литературы] (https: // разработчик .mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes), ссылаясь на 'data- *' как основной способ хранения дополнительных семантических данных в HTML. Кроме того, [Официальный валидатор W3C HTML5] (https://validator.w3.org/) испускает ошибку для пользовательских атрибутов без 'data-' спереди. Но вы правы: похоже, это не в спецификации ... Это изменилось? –

+1

@ AndyBarron нашел часть атрибутов 'data- *' (просто читал часть всего документа). Но тогда это не заставляет вас использовать их. – Joseph

+0

Странная формулировка в спецификации, но на это отвечает! –