代码之家  ›  专栏  ›  技术社区  ›  Simon Randy Burden

HTML中总是自动关闭空标记有什么问题吗?

  •  8
  • Simon Randy Burden  · 技术社区  · 14 年前

    在HTML中是否存在总是折叠空标记的浏览器问题。 例如,一个空的head标签可以这样写

    <head></head>
    

    但也可以这样写

    <head/>
    

    第二种情况会在任何场景中引起问题吗?

    谢谢

    8 回复  |  直到 8 年前
        1
  •  3
  •   Community Reversed Engineer    7 年前

    在XHTML中,头部不应该使用最小化形式。

    http://www.w3.org/TR/xhtml1/#guidelines

    关于空元素:

    http://www.w3.org/TR/xhtml1/#C_3

    给定元素的空实例 其内容模型不是空的(用于 例如,空标题或段落) 不要使用最小化窗体(例如 使用 <p> </p> 而不是 <p /> )

    换句话说,段落应该总是在XHTML中关闭,在HTML中,您只能使用开始标记。但是如果元素应该包含内容,那么应该正确地打开和关闭它。

    例如,换行符的内容模型为空,可以写为 <br /> (同样) <hr /> 但不是 <div /> .

    Also see this SO question.

    Empty Elements (XHTML)

    Shorthand markup in HTML

        2
  •  8
  •   Max Shawabkeh    14 年前

    自动关闭 <script> 标签会把一些浏览器搞得一团糟。我记得我自己合上一个脚本标签后,我的整个页面都消失在IE的稀薄空气中——所有的内容都是以脚本的形式阅读的。

        3
  •  4
  •   Williham Totland    14 年前

    假设您将XHTML作为XML提供,则不会。 <head></head> 完全地 相当于 <head /> . 事实上,一个XML解析器甚至都不会费心告诉您拥有哪一个。

    (然而,有一个问题是 <head> 标签 必须 包含一个 <title> )

        4
  •  2
  •   Ms2ger    14 年前

    自动关闭标记不存在于 HTML . 这个 / 总是被忽略,也就是说, <foo/> <foo> 是等效的。对于诸如 br 很好,因为你想 <br> . 然而, <script src="..." /> 意思与 <script src="..."> ,这是一个问题(如其他答案所述)。 <head/> 不是什么问题,因为 </head> 结束标记仍然是可选的。

    XML 另一方面,自动关闭标签可以满足您的需要。不过,你可能 不使用XML ,即使您有XHTML doctype。除非你用 text/xml , application/xml application/xhtml+xml mime类型(或任何其他xml mime类型),尤其是当您以 text/html ,它们不会被视为XML。

        5
  •  0
  •   BradBrening    14 年前

    我不知道。过去咬我的一个警告是自动关闭我的脚本标签: <script type="text/javascript" src="somefile.js" />

    这会导致一些有趣的失败。

        6
  •  0
  •   Peter    14 年前

    一般来说,空元素可以写为自结束标记,或者打开和关闭标记。

    但是,HTML4 DTD指定文档头必须包含标题元素。

    “每个HTML文档的标题部分都必须有标题元素。”

    http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#h-7.4.1

        7
  •  0
  •   Steven Schlansker    14 年前

    我认为一些老版本的浏览器在缺乏空白方面存在问题,特别是 <head/> 将被解释为“head/”标记,而 <head /> 将被解释为具有空白属性“/”的“head”标记,该属性被忽略。

    这只影响少数浏览器,afaik。两者都是有效的XHTML,但是旧的仅HTML浏览器可能会有问题。

    事实上,记录在 the XHTML guidelines 作为C.2

        8
  •  0
  •   Alohci    14 年前

    甚至只考虑浏览器问题(即忽略有效性)并将问题缩小到 head 只有标签,答案仍然是肯定的。

    比较

    <head/>
    <object>Does this display?</object>
    

    反对

    <head></head>
    <object>Does this display?</object>
    

    每个都作为文本/HTML提供给任何版本的IE。

    Does this display? 仅在后一个示例中显示。