将换行符插入预标记(IE,Javascript)

Ita*_*man 14 javascript internet-explorer pre

在IE中,当我将文本插入<pre>标记时,新行被忽略:

<pre id="putItHere"></pre>

<script>
function putText() {
   document.getElementById("putItHere").innerHTML = "first line\nsecond line";
}
</script>
Run Code Online (Sandbox Code Playgroud)

使用\r\n而不是普通\n不起作用.

<br/> 确实有效但在FF中插入了一个额外的空白行,这对我来说是不可接受的.

spl*_*tne 12

这些quirksmode.org错误报告和有关Internet Explorer的innerHTML行为的评论可以帮助:

" IE将HTML规范化应用于分配给innerHTML属性的数据.这会导致在应该保留格式的元素中显示空格的错误,例如<pre>和<textarea>. "


Chr*_*ung 5

这在IE中有用吗?

document.getElementById("putItHere")
    .appendChild(document.createTextNode("first line\nsecond line"));
Run Code Online (Sandbox Code Playgroud)

我用Firefox测试它,它的工作原理.:-)


Edw*_*lde 5

可以在已接受答案中链接到的页面中找到解决方法.为了便于使用,它是:

if (elem.tagName == "PRE" && "outerHTML" in elem)
{
    elem.outerHTML = "<PRE>" + str + "</PRE>";
}
else
{
    elem.innerHTML = str;
}
Run Code Online (Sandbox Code Playgroud)