当前位置:  开发笔记 > 前端 > 正文

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

如何解决《为什么firebug将<tbody>添加到<table>?》经验,为你挑选了2个好方法。

我查看了html源代码,没有,但是当在HTML标签中通过firebug查看时,会出现.知道为什么吗?



1> Nickolay..:

总结bobince,Kieron,Alohci和其他人在答案和评论中给出的出色解释:

    Firebug只显示已解析页面的DOM.由于复杂的HTML解析规则,DOM将与源HTML"不同"(在某种意义上).

    在这种情况下,TBODYDOM解析器添加DOM中的元素.请注意,这种奇怪的解析仅限于text/html文档,而在XHTML中,DOM与源XML紧密对应.

    此行为在HTML 4中指定.对于内容模型(允许儿童)table(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)- trs的只允许在tbody!规范说tbody开始标记是可选的,这意味着如果HTML解析器tr直接遇到table它,它会插入tbody作者省略的开始标记.

    为了使事情更清楚,HTML 5定义了非常详细的解析规则,特别是对于这种情况:"当插入模式为"表格中"时,必须按如下方式处理令牌:[...]标签名称为1的开始标记of:"td","th","tr" - >表现为好像已经看到标签名为"tbody"的开始标记令牌,然后重新处理当前令牌.



2> Kshitij Saxe..:

它不是萤火虫,而是火狐那样做.这是表格应该与元数据分开编写的方式,例如Firefox只是在发现它们丢失时插入标记.


不是Firefox,而是Gecko:P
至于"为什么":表应该有一个`TBODY`,所以Firefox的内部工作*希望一个人在那里*.如果你没有明确指定它,它将自己创建它,因为它*希望一个人在那里*.即使你在地板上吃得很好,你也会被放在桌子上,因为服务员*想要一张桌子在那里*.; O)
不过,为什么这样做呢?
显然,标准可以双向阅读.事实是*元素*存在和*应该*被使用,但如果没有歧义,它的*声明可以被跳过*.*内部*浏览器总是假设它在那里,因为它使实现更容易.如果"它不必在那里"你的意思是"它*明确的声明*可以被跳过",那么我同意.*element*虽然应该总是隐含在那里,而这正是你在Firebug中看到的.不要将标记与解释结果混淆.
很好地回顾标准解释.类似于常年:必须总是被包裹?;)
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有