data-*属性可以包含HTML标签吗?

Vec*_*tor 22 html

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

Pek*_*ica 27

据我了解指南,它基本上是有效的,但最好使用HTML实体.

HTML 4参考:

您还应该在属性值内转义&,因为在cdata属性值中允许实体引用.此外,您应该转义> as>以避免在引用的属性值中遇到此字符时,错误地将此错误地视为标记结尾的旧用户代理的问题.

HTML 5参考:

除非另有指定,否则HTML元素上的属性可能具有任何字符串值,包括空字符串.除非明确说明,否则对此类属性中可指定的文本没有限制.

所以,正如@tdammers所说,最好的办法是逃避这些角色(引用W3C参考文献)

  • &amp;代表&标志.
  • &lt;代表<标志.
  • &gt;代表 >标志.
  • &quot;代表"商标.

如果要将它们用作HTML,则从它们的实体值解码它们.

  • 请注意,OP 正在询问数据属性,即 HTML5 功能,因此答案应基于 HTML5 草案,而不是 HTML4。但你的建议基本上是正确的,这样做是有效的。 (2认同)

Alo*_*hci 10

假设你以text/html的形式提供它,那么它是有效的.

请注意,不仅可以在属性中包含标记,而且iframe元素上的HTML5 srcdoc属性也会鼓励它.HTML5草案说:

在HTML语法中,作者只需记住使用U + 0022 QUOTATION MARK字符(")来包装属性内容,然后转义所有U + 0022 QUOTATION MARK(")和U + 0026 AMPERSAND(&)字符,.. ..

请注意,当使用XML内容类型(例如application/xhtml + xml)时,它无效,甚至格式正确.

  • +1这是正确的,因为这是唯一“必须”转义的两个字符。这是我正在寻找的部分 (2认同)

vic*_*vic 6

我会说是的,因为它仍然是有效的HTML5.较旧的浏览器(哪些?)可能无法正确解析.

3.2.4.1节当前HTML5草案的属性说明了这一点:

除非另有指定,否则HTML元素上的属性可能具有任何字符串值,包括空字符串.除非明确说明,否则对此类属性中可指定的文本没有限制.

内部属性中的HTML标记也在http://html5.validator.nu验证


tda*_*ers -2

不。那是无效的 - HTML 不允许 < 或 > 内部属性。

<img src="world.jpg" data-title="Hello World!&lt;br/&gt;What gives?"/>是有效的,但它会按字面显示 <br/>,而不是换行符。