带有跨浏览器换行符的Javascript预格式化文本

Sal*_*dor 7 javascript cross-browser line-breaks pre textnode

我预先格式化了包含换行符和多空格的字符串,我想将它们附加到文本节点中.

<pre id="bar"></pre>

<script>
   var string = "Preformatted"
                + "\n"  // \r, \r\n, \n\r or what else?
                + "multispace     string";
   var text = document.createTextNode(string);
   document.getElementById('bar').appendChild(text);
</script>
Run Code Online (Sandbox Code Playgroud)

我试图采用线路断路器:

  • \n 在所有浏览器中打破行,但在IE(我正在测试7)成为一个空间
  • \r 仅在IE中打破行
  • \r\n 适用于所有浏览器,但在IE中,第二行开头的空间很恐怖
  • \n\r 总而言之,但是在IE中,第一行末尾的空间对于我的布局来说是不可接受的.

我无法使用<br>innerHTML,因为IE会折叠多个空格.
jQuery .text(string)具有完全相同的行为.appendChild(createTextNode(string))

如何插入跨浏览器换行符?
最终,如何轻松检测浏览器是否支持\n\r

Esa*_*ija 7

这似乎适用于我测试的所有浏览器(safari,opera,chrome,firefox,ie7,ie8,ie9):

http://jsfiddle.net/4bQ5Q/1/

码:

var textarea = document.createElement("textarea");
textarea.value = "\n";
var eol = textarea.value.replace(/\r\n/, "\r");

var string = "Preformatted" + eol + "multispace     string";

var text = document.createTextNode(string);
document.getElementById('bar').appendChild(text);?
Run Code Online (Sandbox Code Playgroud)