IE9和Chrome14都记录TBODY为tagName内部元素<table>
HTML5规范<table>清楚地说明:
后跟零个或多个tbody元素或一个或多个tr元素
此外.HTML5规范<tr>清楚地说明:
作为表元素的子元素,在任何标题,colgroup和thead元素之后,但仅当没有tbody元素是table元素的子元素时.
为什么浏览器会破坏我的DOM并注入<tbody>时间
"向后兼容性"的答案绝对没有意义,因为我特意选择了HTML5文档类型.
dur*_*uri 39
"向后兼容性"的答案绝对没有意义,因为我特意选择了HTML5文档类型.
但是,浏览器不区分HTML版本.具有HTML5 doctype和HTML4 doctype的HTML文档(除了FPI中没有URL的HTML4过渡文档类型的小例外)将以相同的方式进行解析和呈现.
我将引用HTML5解析器描述的相关部分:
8.2.5.4.9"表中"插入模式
...
标记名称为以下值之一的开始标记:"td","th","tr"
就像看到标签名为"tbody"的开始标记令牌一样,然后重新处理当前令牌.
根据我的经验,浏览器不区分HTML5和HTML4文档.它们的行为相同.在<!doctype html>不触发浏览器中的任何特殊行为.
而且<!doctype html>是没有保留的"HTML5文件" -这只是最简单的可能的doctype触发标准模式.
其中大部分都是因为HTML5将HTML 4和XHTML 1.x的后继版本合并为单个规范.
当引入XHTML 1.0并且浏览器开始尝试使用XML解析器时,他们遇到了问题.作者习惯于在<table>没有<tbody>s 的情况下写作.由于不允许XML解析器推断像HTML解析器那样的标签,因此帮助作者转换到XHTML(当时看起来像个好主意)的最佳方法是通过允许<tr>s成为正确呈现的表.<table>DOM内部的直接孩子.(DOM尽可能相同,无论它是源自HTML解析还是XML解析.)因此浏览器实现了对此的支持.
现在,HTML5内容模型在HTML5的HTML和XHTML序列化之间共享,因此它必须允许两种安排,即有或没有tbody.
另一方面,在"HTML语法"(不适用于XML解析器)一节中,它清楚地表明HTML解析将推断tbody标签.
当<table><tr><td>my text</td></tr></table>作为text/html在DOM中创建的表结构提供时,将tr作为tbody的直接子项,该tbody是表的直接子项.HTML5内容模型说这没关系.
当<table><tr><td>my text</td></tr></table>作为application/xhtml+xml在DOM中创建的表结构提供时,将tr作为表的直接子项.HTML5内容模型说这也没关系.
也可以通过脚本创建一个tr作为表的直接子代.出于同样的原因,浏览器会将此视为表格行,正如大多数人所期望的那样.
| 归档时间: |
|
| 查看次数: |
4789 次 |
| 最近记录: |