Нестандартные атрибуты на HTML-ТЭГАХ. Хорошая вещь? Плохая вещь? Ваши мысли?

Исключения IO могут быть обнаружены только в том случае, если компилятор предсказывает, что в коде может быть что-то, что вызывает IOException. Таким образом, вы получаете предупреждение о том, что исключение IO никогда не выбрасывается из тела оператора try (поскольку в теле try нет ничего).

92
задан Robert Greiner 13 August 2009 в 18:52
поделиться

6 ответов

Я - большой поклонник предложенного решения для HTML 5 (data- снабженные префиксом атрибуты).Править: Я добавил бы, что существуют, вероятно, лучшие примеры для использования пользовательских атрибутов. Например, данные, которые пользовательское приложение будет использовать, которые не имеют никакого аналога в стандартных атрибутах (например, настройка для обработчиков событий на основе чего-то, чего нельзя обязательно выразить в имени класса или идентификаторе).

50
ответ дан eyelidlessness 24 November 2019 в 06:34
поделиться

Мое личное отношение в Вашем примере - то, что маршрут промежутка является более соответствующим, поскольку это соответствует стандартам спецификации XHTML. Однако я вижу argment для пользовательских атрибутов, но я думаю, что они добавляют уровень беспорядка, который не необходим.

-1
ответ дан Mitchel Sellers 24 November 2019 в 06:34
поделиться

Что ж, в этом случае оптимальным решением является

<a href="#" alt="" title="Title of My Pop-up">click</a>

и использование атрибута title.

Иногда я нарушаю спецификацию, если мне это действительно нужно. Но редко и только по уважительной причине.

РЕДАКТИРОВАТЬ: Не уверен, почему -1, но я указывал, что иногда вы думаете, что вам нужно нарушить спецификацию, когда вы этого не делаете.

4
ответ дан 24 November 2019 в 06:34
поделиться

Другой вариант - определить что-то вроде этого в Javascript:

<script type="text/javascript">
var link_titles = {link1: "Title 1", link2: "Title 2"};
</script>

Затем вы можете использовать это позже в своем коде Javascript, предполагая, что ваша ссылка имеет идентификатор, соответствующий идентификатору в этой хэш-таблице .

У него нет недостатков двух других методов: нет нестандартных атрибутов или уродливого скрытого диапазона.

Недостатком является то, что он может быть излишним для таких простых вещей, как ваш пример. Но для более сложных сценариев, когда вам нужно передать больше данных, это хороший выбор. Особенно учитывая, что данные передаются в формате JSON, поэтому вы можете легко передавать сложные объекты.

Кроме того, вы храните данные отдельно от форматирования, что хорошо для удобства обслуживания.

Вы даже можете иметь что-то вроде это (чего нельзя сделать другими методами):

var poi_types = {1: "City", 2: "Restaurant"};
var poi = {1: {lat: X, lng: Y, name: "Beijing", type: 1}, 2: {lat: A, lng: B, name: "Hatsune", type: 2}};

...

9
ответ дан 24 November 2019 в 06:34
поделиться

Я тоже ломал голову над этим. Мне нравится удобочитаемость нестандартных атрибутов, но мне не нравится, что это нарушает стандарты. Пример скрытого диапазона совместим, но не очень удобочитаем. Как насчет этого:

<a href="#" alt="" title="" rel="{popup_title:'Title of My Pop-up'}">click</a>

Здесь код очень удобен для чтения из-за нотации пары ключ / значение JSON. Вы можете сказать, что это метаданные, принадлежащие ссылке, просто взглянув на нее. Единственный недостаток, который я вижу помимо взлома атрибута rel, заключается в том, что это может привести к беспорядку для сложных объектов. Мне очень нравится упомянутая выше идея атрибутов с префиксом "data-". Поддерживают ли это существующие браузеры?

Здесь есть о чем подумать. Насколько сильно несовместимый код влияет на SEO?

-1
ответ дан 24 November 2019 в 06:34
поделиться

Пользовательские атрибуты обеспечивают удобный способ переноса дополнительных данных в на стороне клиента. Dojo Toolkit делает это регулярно, и было указано ( Разоблачение мифов о Dojo Toolkit ), что:

Пользовательские атрибуты всегда были правильный HTML, они просто не проверяют при тестировании с DTD. [...] Спецификация HTML гласит, что любой нераспознанный атрибут должен быть игнорируется механизмом рендеринга HTML в пользовательских агентах и ​​Dojo опционально использует это для улучшения простота разработки.

27
ответ дан 24 November 2019 в 06:34
поделиться
Другие вопросы по тегам:

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