Этот предмет превратился в горячее обсуждение в офисе, таким образом, мне интересно изучать то, что Вы думаете.
Мы работаем над веб-приложением, которое только предназначается для некоторых определенных браузеров. Эти браузеры в настоящее время включают различные разновидности 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 фактический поставленный вопрос.
Нет ограничений / рисков браузера. Только валидатор w3 будет лаять, но лающие собаки не кусаются.
В спецификации w3 говорится следующее:
- Если пользовательский агент встречает атрибут, который он не распознает, он должен игнорировать весь атрибут спецификация (т. е. атрибут и его значение).
IE также не отображает в режиме причуд или так, как некоторые могут подумать. Он будет делать это только с недопустимыми / принудительными типами документов, но не с недопустимыми атрибутами.
Однако имейте в виду, что некоторые библиотеки / фреймворки Javascript будут «невидимо» добавлять / использовать пользовательские атрибуты HTML в дереве DOM, например, несколько плагинов jQuery делать. Таким образом вы можете рискнуть столкнуться с конфликтами в атрибутах, потому что он «по совпадению» использует атрибут с тем же именем, что и вы, для ваших собственных целей. К сожалению, это часто плохо документируется или вообще не документируется.
HTML 5 позволяет настраивать атрибуты с использованием префикса «data-», см. http://ejohn.org/blog/html-5-data-attributes /
Повторите попытку этой ветки: Можно ли добавлять собственные атрибуты Html?
Также посмотрите это: Нестандартные атрибуты в тегах HTML. Хорошая вещь? Плохо? Ваши мысли?
Если цель состоит в том, чтобы поддерживать допустимый html4.0 strict, то не имеет значения, почему вы хотите использовать настраиваемые атрибуты, вы нарушаете цель.
Я думаю, что вам нужно задать вопрос: почему вам нужно нарушить 4.0 strict, чтобы получить желаемую функциональность: все, что вы могли бы использовать для себя с помощью настраиваемого атрибута, вы можете использовать в существующем атрибуте:
<span translationkey="someKey">...</span>
could be:
<span class="Translationkey@someKey">...</span>
потребуется несколько дополнительных циклов для анализа всей информации о классе,
Или возможно, что некоторые браузеры перейдут в "режим причуд" и отобразят страницу так, как если бы она была чем-то другим, кроме строгого HTML 4.0?
Нет, неверные атрибуты не заставят изменение режима рендеринга.
Если вас не волнует проверка, делайте то, что вам нравится, но проверка - полезный инструмент для обнаружения простых ошибок, которые в противном случае могут заставить вас гнаться за отладкой. Учитывая, что есть много других совершенно хороших альтернатив для передачи данных в JavaScript, я предпочитаю использовать один из них, а не отказываться от проверки.
Кроме того, когда вы добавляете произвольный атрибут, вы эффективно играете в глобальном пространстве имен. Нет никакой гарантии, что какой-нибудь будущий браузер или стандарт не решит использовать имя «translationkey» для какой-то новой функции, которая может сбить с толку ваш скрипт. Итак, если вам нужно добавить атрибуты,
Если страница объявлена как HTML 4 strict, она не должна добавлять атрибуты, которые не используются в этом HTML. Иными словами, непонятно, как бы себя вели браузеры.
Как уже сообщалось, одним из способов добавления дополнительных атрибутов является добавление их как классов, даже если это имеет некоторые ограничения.