HTML 5自定义元素名称?

时间:2013-12-01 17:18:09

标签: html html5

HTML 5 specification中,解析器和规范声明元素名称可以是以字母开头并后跟字母数字字符的所有内容。

现在的问题是,如果我引入的附加元素不是规范的一部分,但在符合指定语法方面有效,那么会发生什么。

当遇到具有自定义但未知名称的元素时,所有这些浏览器会做什么?这些元素是否像任何元素一样受到威胁,还是被遗漏,剥离或替换?

例如,HTML5编辑器的行为如何?

有关有效元素标签名称的规范中是否有任何内容?

[更新]

该规范在这里具有误导性,因为它声明了HTML元素名称的字母数字字符。在阅读HTML 5规范时,我想念所有元素名称都是如此。

这显然是错误的。在解析器部分中,它声明元素名称必须仅以ASCII字母开头,并且在该字母后面除外:

  

“tab”(U + 0009)
  “LF”(U + 000A)
  “FF”(U + 000C)
  U + 0020 SPACE
  “/”(U + 002F)
  “>” 中(U + 003E)
  U + 0000 NULL
  EOF

除了那些需要特殊处理涉及错误或结束标签名称的字符旁边,还允许所有其他可能的字符接缝。

  

其他任何事项    - >将当前输入字符附加到当前标记令牌的标记名称。

在我的现场测试中,几个解析器的第一个字母也允许使用附加的单代码字母(至少它们与这些字母相同)。

[/更新]

1 个答案:

答案 0 :(得分:3)

  

在HTML 5规范中,解析器和规范说明了这一点   元素名称可以是以字母开头并跟随的所有内容   字母数字字符。

不正确的。规范声明元素名称必须是该文档中明确列出的名称之一,或者在另一个适用的规范中。这些包括但不限于SVG和MathML。

规范还包括HTML的消费者的处理规范,例如浏览器。这并没有描述什么是“允许”,它描述了这些消费者应该对文档的每个字符做什么,无论它是否包含允许或不允许的内容。

  

现在问题是如果我引入其他元素会发生什么   不是规范的一部分,但在遵守规范方面是有效的   指定的语法。

遵循以上规则。 “指定语法”无关紧要。该规范描述了消费者应该为任何输入字符流做什么。

  

当他们遇到使用自定义的元素时,所有这些浏览器会做什么   尚未知名?这些元素是否被视为任何元素或   他们被排除在外,被剥夺或更换?

它们被视为实现HTMLUnknownElement接口的http://www.w3.org/1999/xhtml命名空间中的元素。

  

HTML5编辑器的行为如何?

如果它们符合HTML5标准,那么在阅读HTML时它们的行为方式相同。

  

我忽略的规格中是否有任何内容   有效的元素标签名称?

见上文第一段。还有Custom Elements spec,它使任何元素名称以ASCII字母开头并包含连字符被认为是有效的。目前还不清楚该规范目前是否是“HTML5适用规范”,但如果没有,很可能很快就会出现。