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

Может ли атрибут data- * содержать теги HTML?

т.е. <img src="world.jpg" data-title="Hello World!<br/>What gives?"/>

4b9b3361

Ответ 1

Насколько я понимаю рекомендации, он в основном действителен, но лучше использовать объекты HTML.

Из ссылка HTML 4:

Вы также должны избегать и внутри значений атрибутов, поскольку ссылки на объекты допускаются в значениях атрибутов cdata. Кроме того, вам следует избегать > как > чтобы избежать проблем со старыми пользовательскими агентами, которые неправильно воспринимают это как конец тега при пересечении этого символа в значениях кавычек.

Из ссылка HTML 5:

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

Так что лучше всего делать, как уже говорит @tdammers, - это избежать этих символов (цитируя ссылку W3C)

  • &amp; для представления знака &.
  • &lt; для представления знака <.
  • &gt; для представления знака >.
  • &quot; для представления метки ".

и декодировать их из своих значений сущности, если они должны использоваться как HTML.

Ответ 2

Предоставление вам услуги в виде текста /html, тогда да, это действительно.

Обратите внимание, что не только можно включить разметку внутри атрибутов, но атрибут srcdoc HTML5 в элементе iframe положительно поощряет его. В проекте HTML5 говорится:

В синтаксисе HTML авторам необходимо только не забудьте использовать U + 0022 ЦЕН. символов ( "), чтобы обернуть атрибут содержимое, а затем, чтобы избежать всех U + 0022 ЦЕНА ЦИТАТЫ (" ) и U + 0026 Символы AMPERSAND (&),....

Обратите внимание, что при подаче с типом содержимого XML (например, application/xhtml + xml) он недопустим или даже корректно сформирован.

Ответ 3

Я бы сказал, да, так как в нем все еще действительный HTML5. Старые браузеры (какие?) Не могут правильно разобрать.

Раздел 3.2.4.1 Атрибуты текущего HTML5-проекта говорят об этом:

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

HTML-теги внутри атрибутов также проверяются на http://html5.validator.nu

Ответ 4

Нет. Это было бы неверно - HTML не позволяет < или > внутренние атрибуты.

<img src="world.jpg" data-title="Hello World!&lt;br/&gt;What gives?"/> будет действительным, но он отобразит < br/ > буквально, не как символ новой строки.