Подтвердить что ты не робот

Как AngularJS уходит с использованием пользовательских тегов и атрибутов HTML5?

Большинство браузеров, похоже, позволяют создавать любые теги элементов, которые вам нравятся, и добавлять любое имя атрибута, которое вам нравится элементам. Например:

<!DOCTYPE html>
<html>
<body>
<div my-attribute="has no data- prefix, but seems to behave like an attribute should">
    <br/>
    <hello-world style="display:block;background:#eee">Hello Everybody</hello-world>
    <goodby-world style="background:#faa">Default display is inline</goodbye-world>
</div>
</body>
</html>

Вышеуказанное отображает штраф. Похоже, что элементы undefined ведут себя очень похоже на промежутки. Он также выглядит так: AngularJS довольно часто использует пользовательские теги и атрибуты - от этого в значительной степени зависит.

Но, насколько я понял, делать такие вещи было не-нет, кроме случаев, когда пользовательские атрибуты html5 имеют префикс "data-".

Итак, мой вопрос: не перестает ли табу составлять свои собственные теги элементов и/или имена атрибутов? Или по-другому, действительно ли AngularJS полагается на нестандартные причуды, которые на самом деле не являются частью спецификации HTML5, но просто так или иначе работают? Кто-нибудь из Google обнаружил давно потерянную секретную главу спецификации html5? Или я совершенно ничего не понимаю?

4b9b3361

Ответ 1

Он не будет проверять, но будет отображаться.

HTML5 предназначен для очень прощения (вопреки XHTML). Отчасти это связано с тем, что "старые" браузеры HTML5 могут разрешать новые элементы (а также плохо отформатированный HTML), которые эта версия еще не поддерживает, не нарушая страницы.

Это можно, конечно, "эксплуатировать", чтобы ввести пользовательские теги.

Сказав это, вы также можете сделать это с помощью HTML4.

Как уже упоминалось в комментариях: у вас также есть возможность префикс любых атрибутов в обычном теге data-, и он будет проверять.

Ответ 2

Из спецификации W3C:

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

Однако, хотя исходный источник тела страницы (до angular обрабатывает элемент ng-app), может не соответствовать стандартам W3C, если вы используете replace: true в директивах, пользовательские элементы заменяются шаблоном HTML, что может быть справедливым. Итак, в этом случае вы можете думать о элементе angular как о простоте заполнителя, который заменяется на вывод HTML терминала.

Ответ 3

Это сочувственно, но такова тема. Веб-интерфейс теперь является тем, что мы делаем, у нас есть возможность создавать/стилизовать/изменять элементы, не относящиеся к спецификации. И команда Angular, возможно, не очень заботится о спецификациях, о ее передовой, они позволяют делать то, что вы хотите. При этом вы можете сделать что угодно и все в Angular с разметкой, которая будет проверять и соответствовать спецификации HTML5 (как в том случае, если они поддерживают ее в обоих направлениях).

Ответ 4

AngularJS все равно, это полностью зависит от вас. Если вы хотите, чтобы ваша директива совместима со старыми IE, вам нужно использовать <div data-hello-world> вместо <hello-world> и поставить данные перед всеми вашими настраиваемыми атрибутами.

HTML5 по-прежнему не на 100% соответствует норме, но постепенно становится нормой.