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个换行符?
答案 0 :(得分:2)
您会看到HTML中其他位置的换行符(在head
之前,在head
和body
之间)。如果您删除所有换行符,直到<body>
,并且在</body>
之后,您的正文中将没有任何换行符。
原因可能很大程度上与容忍无效标记有关,这是历史原因,但现在已成文:完整详细信息在规范starting here中。例如,请注意"in head" insertion mode和"after head" insertion mode都用inserting the character处理空格。