Ответ 1
Пользовательские атрибуты должны начинаться с данных или x-, или они недействительны. Это может вызвать проблемы в будущих браузерах, и HTML-валидаторы скажут, что они недействительны.
Хорошо, недавно я нашел это: https://angularjs.org/
Я заметил, что они используют собственный префикс атрибута "ng-"
Из статей, таких как: http://html5doctor.com/html5-custom-data-attributes/
или даже stackoverflow: qaru.site/info/702240/...
И есть еще много, единственный допустимый (я не говорю о том факте, что они все равно работают) префикс для использования - "data-".
Итак, может ли кто-нибудь объяснить мне, как это может быть, что эти миллионы проектов и компаний используют недопустимый префикс для пользовательских атрибутов HTML-элементов, и, кажется, никому нет до этого дела? Или я что-то упустил?
Я был бы очень признателен за некоторые мысли или даже источники информации, а не только за такие тексты, как "все делают это" и "не беспокойтесь и не оставляйте это".
Пользовательские атрибуты должны начинаться с данных или x-, или они недействительны. Это может вызвать проблемы в будущих браузерах, и HTML-валидаторы скажут, что они недействительны.
Это старый вопрос, но может быть полезным следующее.
В принципе, вы можете создавать любые атрибуты, какие захотите, хотя вы не можете ожидать, что браузер знает, что с ними делать. Это верно как в HTML:
<p thing="whatever" … </p>
и в JavaScript
// p = some element
p.setAttribute('thing','whatever');
Вы можете ожидать, что CSS воспримет ваш пользовательский атрибут серьезно, если вы используете селектор атрибута:
…[thing] {
…
}
Конечно, если вы начнете создавать свои собственные атрибуты, вы столкнетесь с двумя проблемами:
data-
атрибута data-
имеет два преимущества:
data
для легкого доступа Фактически префикс data-
позволяет вам работать с недопустимым в противном случае атрибутом, сказав валидатору пропустить его.
Это не решит проблему конкурирующих имен атрибутов, так что вы в значительной степени сами по себе. Однако обычной практикой является, по крайней мере, включать префикс, специфичный для библиотеки.
Наконец к вопросу о том, чтобы быть действительным.
Если под действительным вы подразумеваете, что он пройдет стандартный (современный) HTML-валидатор, ответ - только data-
будут работать таким образом. Если, с другой стороны, вы имеете в виду, будет ли это работать, то и CSS, и JavaScript будут успешно работать с другими выдуманными атрибутами, если вы не ожидаете, что браузер угадает, что вы имеете в виду.
Официальный валидатор W3C не считает ng-customattr
или x-customattr
или customattr
действительными.
Утверждение, что даже пользовательские атрибуты с префиксом data-
являются недействительными, являются ложными, проверьте эту спецификацию W3C
Однако стоит отметить, что такие проекты, как Laravel Dusk, побуждают разработчиков использовать собственные data-
префиксом data-
.
Стоит отметить, что официальные спецификации W3C - не единственный способ создания HTML-страницы, а рекомендуемые. Я бы осмелился сказать, что есть невысказанные стандарты, которые широко используются в Интернете и все же допускаются всеми основными браузерами, даже если они не упомянуты в спецификациях w3c. Согласно этой статье, пользовательские атрибуты с именем html игнорируются, но все же доступны, поэтому являются приемлемым вариантом.
Боюсь, что у нас под ногами нет твердого места - data-
имя своему параметру с префиксом data-
, вы делаете что-то рекомендованным способом - избегая возможных предупреждений об устаревании или других проблем, если в будущем браузеры будут более строгими. Однако стандарты могут меняться, и поскольку пользовательские именованные атрибуты широко распространены в сети, они могут сами стать стандартом.
Если вы действительно хотите использовать нестандартные data-
префиксом data-
в HTML
, было бы хорошо провести исследование общей поддержки браузера (найти человека, который уже сделал это, и изучить результаты в какой-то статье), и принять решение на основе на этом - как и с любой другой функцией HTML/CSS/JS.