首页 > 解决方案 > 为什么不是由不正确的 html-tag 引起的错误?

问题描述

在 HTML 规范中有一个称为自定义元素的概念。这些元素的名称应该遵循一个明确的表达方式。但是,但是,在浏览器中打开编辑器后,我们可以安全地编写不遵循这些规则的元素,或者简单地使用不遵循这些规则的元素创建一个简单的页面。例如,<redcar> </redcar>。为什么这是允许的并且不会导致任何错误?毕竟,如果我们这样写:<~hello> </~hello>那么开始标签将被视为文本,而结束标签将被注释掉。在任何情况下,您都需要特定的链接来解释这种行为。

有效的自定义元素名称是满足以下所有要求的字符名称序列:

  • 名称必须与PotentialCustomElementName产生式相匹配:

潜在自定义元素名称 ::= [a-z] (PCENChar)* '-' (PCENChar)*

PCENChar ::= "-" | "." | [0-9] | "_" | [a-z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

这使用 XML 规范中的 EBNF 表示法。[XML]

  • 名称不得为以下任何一种:
    • annotation-xml
    • color-profile
    • font-face
    • font-face-src
    • font-face-uri
    • font-face-format
    • font-face-name
    • missing-glyph

标签: html

解决方案


目前还不清楚您认为什么是错误

HTML 解析主要面向永不抛出的原则,并将尝试将所有内容转换为有效的东西。

在您的特定情况下,您创建的是HTMLUnknownElement,这遵循规范:

HTML命名空间中名称为name的元素的元素接口确定如下:

  1. 如果名称appletbgsoundblinkisindexkeygenmulticolnextidspacer,则返回 HTMLUnknownElement。

  2. 如果nameacronym, basefont, big, center, nobr, noembed, noframes, plaintext, rb, rtc, strike, or tt,则返回 HTMLElement。

  3. 如果namelistingor xmp,则返回 HTMLPreElement。

  4. 否则,如果本规范定义了适合与本地名称name对应的元素类型的接口 ,则返回该接口。

  5. 如果其他适用规范为name定义了适当的接口,则返回它们定义的接口。

  6. 如果name是有效的自定义元素名称,则返回 HTMLElement。

  7. 返回 HTMLUnknownElement。


<redcar></redcar>一路走来,直到第 7 条子弹。


推荐阅读