为什么firebug将<tbody>添加到<table>?

我查看了html源代码,没有<tbody> ,但是当通过HTML选项卡中的萤火虫查看时, <tbody>出现。 任何想法为什么?

总结一下bobince,Kieron,Alohci等人在答复和评论中给出的出色解释:

  1. Firebug只显示parsing页面的DOM。 由于复杂的HTMLparsing规则,DOM将与源HTML“不同”(在某种意义上)。
  2. 在这种情况下,DOM中的TBODY元素由HTMLparsing器添加。 请注意,这种奇怪的parsing仅限于text / html文档,而在XHTML中,DOM与源XML紧密相关。
    • 这种行为是在HTML 4中指定的。 内容模型(允许的孩子)的table(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)tr s只允许在tbody ! 规范说tbody的开始标记是可选的,这应该是说,如果HTMLparsing器直接在table遇到tr它会插入作者省略的tbody开始标记。
    • 为了使事情更加清楚,HTML 5定义了非常详细的parsing规则,特别是在这种情况下 :“当插入模式是”在表格中“时,标记必须如下处理:[…]标签名称为1的开始标签:“td”,“th”,“tr” – >就像看到标签名称为“tbody”的开始标记标记一样,然后重新处理当前标记。

它不是萤火虫,但火狐是这样做的。 这就是表格应该用<TBODY>与元数据分开编写的方式,比如<COLGROUP> Firefox只是在发现它们丢失时插入<TBODY>标签。

Firefox增加了他们,因为标准是这样说的。

TABLE实际上不允许直接包含TR元素,它们必须包含在THEADTFOOTTBODY 。 但是为了简单和向后兼容,当桌子只包含一个桌子主体和没有桌子头或脚部分时,可以省略TBODY的开始标签。 在这种情况下,元素是由浏览器推断的。

它不是由萤火虫添加的,它是由Firefox添加的。 Firebug给你实际的dom看起来像什么。 如果你浏览各种dom元素,你会注意到Firefox也增加了一些自己的风格元素。

A.19。 显式元素

在表内使用显式的tbody元素。

理由:虽然table元素的内容模型允许跳过tbody元素,但在HTML 4中,这个元素是隐含的。 HTML 4用户代理将静静地添加这个元素,因此可能会混淆脚本或样式表。

资料来源: http : //www.w3.org/TR/2009/NOTE-xhtml-media-types-20090116/#compatGuidelines