Javascript 为什么预标记后的换行符会消失?

Javascript 为什么预标记后的换行符会消失?,javascript,html,dom,Javascript,Html,Dom,为什么紧跟在标记后面的新行不会出现在DOM中 <html> <body> <div id="mydiv"> hello div world </div> <pre id="mypre"> hello pre world </pre> <script> alert("div content: "+document.getElementById("mydiv").innerHTML) alert("pre co

为什么紧跟在标记后面的新行不会出现在DOM中

<html>
<body>

<div id="mydiv">
hello
div
world
</div>

<pre id="mypre">
hello
pre
world
</pre>

<script>
alert("div content: "+document.getElementById("mydiv").innerHTML)
alert("pre content: "+document.getElementById("mypre").innerHTML)
</script>

</body>
</html>
<pre id="mypre">

hello
pre
world
</pre>

你好
div
世界
你好
之前
世界
警报(“div内容:”+document.getElementById(“mydiv”).innerHTML)
警报(“pre-content:+document.getElementById(“mypre”).innerHTML)
显示与div标记后的换行符不同,pre标记后的换行符似乎不在dom中。另外,整个主体的innerHTML在pre标记后不显示换行符

<pre>Some text
some more
and more
</pre>
有没有办法在JS中找出原始HTML文档是否在后面包含换行符?

因为这是:

<pre>Some text
some more
and more
</pre>
注意:在HTML语法中,紧跟在
pre
元素开始标记之后的前导换行符被去除

所以,如果你想在那里换行,你必须增加一个额外的换行:


你好
之前
世界

旁注:我强烈建议始终包含doctype,即使是在您问题中的简短示例中也是如此。它可以起到作用(尽管我认为在这种情况下它不会起作用)。

来自:

注意在HTML语法中,紧跟在pre元素开始标记之后的前导换行符被去除

我认为这样做是为了让你不必写:

一些文本
更多
还有更多
以避免在开始时出现额外的换行。你可以写:


一些文本
更多
还有更多
如果您使用
来排列列,这非常有用,因为第一种格式不允许您正确排列第一行

如果要在预格式化文本的开头添加一个额外的换行符,请在标记后添加一个空行:


你好
之前
世界

出色的工作,包括。很好,谢谢。是的,规范确实这么说:“一个换行符可以直接放在pre和textarea元素的开始标记之后。如果元素的内容打算以换行符开始,那么作者就需要包含两个连续的换行符。”关于doctype,您是对的,因为这只涉及HTML序列化,因此,当使用XML序列化时,换行符被保留。
<pre id="mypre">

hello
pre
world
</pre>