为什么浏览器将2个换行符插入一个空的body元素?

时间:2018-09-22 14:09:34

标签: javascript html

HTML内的空白有时很重要。因此,我想知道为什么Chrome和Firefox在空的body元素中插入2个换行符。

使用

加载页面
<body></body>

或同样

<body />

给出具有两个换行符的主体:

document.body.outerHTML // <body>↵↵</body>
document.body.firstChild // #text, 2 linefeeds

将innerHTML或externalHTML设置为“”或删除textnode子级会得到一个真正的空正文

document.body.outerHTML // "<body></body>"

为什么浏览器会神奇地插入2个换行符?

1 个答案:

答案 0 :(得分:2)

您会看到HTML中其他位置的换行符(在head之前,在headbody之间)。如果您删除所有换行符,直到<body>,并且在</body>之后,您的正文中将没有任何换行符。

原因可能很大程度上与容忍无效标记有关,这是历史原因,但现在已成文:完整详细信息在规范starting here中。例如,请注意"in head" insertion mode"after head" insertion mode都用inserting the character处理空格。