为什么firebug将<tbody>添加到<table>?
我查看了html源代码,没有<tbody>
,但是当通过HTML选项卡中的萤火虫查看时, <tbody>
出现。 任何想法为什么?
总结一下bobince,Kieron,Alohci等人在答复和评论中给出的出色解释:
- Firebug只显示parsing页面的DOM。 由于复杂的HTMLparsing规则,DOM将与源HTML“不同”(在某种意义上)。
- 在这种情况下,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”的开始标记标记一样,然后重新处理当前标记。
- 这种行为是在HTML 4中指定的。 内容模型(允许的孩子)的
它不是萤火虫,但火狐是这样做的。 这就是表格应该用<TBODY>
与元数据分开编写的方式,比如<COLGROUP>
Firefox只是在发现它们丢失时插入<TBODY>
标签。
Firefox增加了他们,因为标准是这样说的。
TABLE
实际上不允许直接包含TR
元素,它们必须包含在THEAD
, TFOOT
或TBODY
。 但是为了简单和向后兼容,当桌子只包含一个桌子主体和没有桌子头或脚部分时,可以省略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