Каковы конкретные риски использования пользовательских HTML-атрибутов?

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

Мы работаем над веб-приложением, которое только предназначается для некоторых определенных браузеров. Эти браузеры в настоящее время включают различные разновидности Opera 9 и Mozilla 1.7.12. В будущем мы, вероятно, также должны поддерживать Opera 10 и различные разновидности WebKit. Но очень маловероятно, что мы когда-либо оказываемся перед необходимостью иметь дело с любой версией IE.

Наше веб-приложение объявляет HTML 4.0, строгий в, он - doctype.

Недавно, я предложил как решение определенной проблемы использовать пользовательские атрибуты в HTML. Я предложил что-то, что будет похоже на это:

<span translationkey="someKey">...</span>

Так как это не допустимый HTML 4, он не нашел понимание наших парней HTML, и мы вошли в аргумент.

Мой вопрос - это: Что - если кто-либо - является рисками использования пользовательских атрибутов? Я знаю, что страница не проверит, но все браузеры только игнорируют атрибуты, которые они не знают? Или действительно ли возможно, что некоторые браузеры изменятся на "режим причуд" и представят страницу, как будто это было что-то другое, чем строгий HTML 4.0?

Обновление:

Hilited фактический поставленный вопрос.

9
задан Deduplicator 1 February 2015 в 16:26
поделиться

6 ответов

Нет ограничений / рисков браузера. Только валидатор w3 будет лаять, но лающие собаки не кусаются.

В спецификации w3 говорится следующее:

  • Если пользовательский агент встречает атрибут, который он не распознает, он должен игнорировать весь атрибут спецификация (т. е. атрибут и его значение).

IE также не отображает в режиме причуд или так, как некоторые могут подумать. Он будет делать это только с недопустимыми / принудительными типами документов, но не с недопустимыми атрибутами.

Однако имейте в виду, что некоторые библиотеки / фреймворки Javascript будут «невидимо» добавлять / использовать пользовательские атрибуты HTML в дереве DOM, например, несколько плагинов jQuery делать. Таким образом вы можете рискнуть столкнуться с конфликтами в атрибутах, потому что он «по совпадению» использует атрибут с тем же именем, что и вы, для ваших собственных целей. К сожалению, это часто плохо документируется или вообще не документируется.

13
ответ дан 4 December 2019 в 06:41
поделиться

HTML 5 позволяет настраивать атрибуты с использованием префикса «data-», см. http://ejohn.org/blog/html-5-data-attributes /

10
ответ дан 4 December 2019 в 06:41
поделиться

Если цель состоит в том, чтобы поддерживать допустимый html4.0 strict, то не имеет значения, почему вы хотите использовать настраиваемые атрибуты, вы нарушаете цель.

Я думаю, что вам нужно задать вопрос: почему вам нужно нарушить 4.0 strict, чтобы получить желаемую функциональность: все, что вы могли бы использовать для себя с помощью настраиваемого атрибута, вы можете использовать в существующем атрибуте:

<span translationkey="someKey">...</span>

could be:

<span class="Translationkey@someKey">...</span>

потребуется несколько дополнительных циклов для анализа всей информации о классе,

9
ответ дан 4 December 2019 в 06:41
поделиться

Или возможно, что некоторые браузеры перейдут в "режим причуд" и отобразят страницу так, как если бы она была чем-то другим, кроме строгого HTML 4.0?

Нет, неверные атрибуты не заставят изменение режима рендеринга.

Если вас не волнует проверка, делайте то, что вам нравится, но проверка - полезный инструмент для обнаружения простых ошибок, которые в противном случае могут заставить вас гнаться за отладкой. Учитывая, что есть много других совершенно хороших альтернатив для передачи данных в JavaScript, я предпочитаю использовать один из них, а не отказываться от проверки.

Кроме того, когда вы добавляете произвольный атрибут, вы эффективно играете в глобальном пространстве имен. Нет никакой гарантии, что какой-нибудь будущий браузер или стандарт не решит использовать имя «translationkey» для какой-то новой функции, которая может сбить с толку ваш скрипт. Итак, если вам нужно добавить атрибуты,

1
ответ дан 4 December 2019 в 06:41
поделиться

Если страница объявлена ​​как HTML 4 strict, она не должна добавлять атрибуты, которые не используются в этом HTML. Иными словами, непонятно, как бы себя вели браузеры.
Как уже сообщалось, одним из способов добавления дополнительных атрибутов является добавление их как классов, даже если это имеет некоторые ограничения.

0
ответ дан 4 December 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: