以下源代码警告以下结果:
Internet Explorer 7:29
Firefox 3.0.3 : 37 (正确)
Safari 3.0.4 (523.12.9): 38
Google Chrome 0.3.154.9:38
请忽略以下事实:
- Webkit (Safari/Chrome) 浏览器在正文标记的末尾插入一个额外的文本节点
- Internet Explorer 在其空白节点中没有新行,就像它们应该的那样。
- Internet Explorer 没有起始空白节点(<form> 标签前有明显的空白,但没有匹配的文本节点)
在测试页面中的标签中,以下标签没有在 DOM 中插入空白文本节点:form
, input[@radio]
, div
, span
, table
, ul
, a
.
我的问题是:是什么让这些节点成为 Internet Explorer 中的例外? 为什么在这些节点之后没有插入空格,而在其他节点中插入了空格?
如果您切换标签顺序,将 doctype 切换为 XHTML(同时仍保持标准模式),此行为是相同的。
这是一个提供一些背景信息的链接,但没有理想的解决方案。这个问题可能没有解决方案,我只是对这种行为感到好奇。
感谢互联网,扎克
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function countNodes()
{
alert(document.getElementsByTagName('body')[0].childNodes.length);
}
</script>
</head>
<body onload="countNodes()">
<form></form>
<input type="submit"/>
<input type="reset"/>
<input type="button"/>
<input type="text"/>
<input type="password"/>
<input type="file"/>
<input type="hidden"/>
<input type="checkbox"/>
<input type="radio"/>
<button></button>
<select></select>
<textarea></textarea>
<div></div>
<span></span>
<table></table>
<ul></ul>
<a></a>
</body>
</html>