【发布时间】:2012-06-08 20:42:44
【问题描述】:
我已经预先格式化了带有换行符和多空格的字符串,我想将它们附加到文本节点中。
<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>
我尝试采用换行符:
-
\n在所有浏览器中都换行,但在 IE 中(我在 7 上测试)变成了空格 -
\r仅在 IE 中换行 -
\r\n适用于所有浏览器,但在 IE 中,第二行开头的空格很恐怖 -
\n\r还可以,但在 IE 中,第一行末尾的空格对于我的布局是不可接受的。
我不能使用<br> 和innerHTML,因为IE 会折叠多个空格。
jQuery .text(string) 与 .appendChild(createTextNode(string)) 具有完全相同的行为
如何插入跨浏览器的换行符?
最后,如何轻松检测浏览器是否支持\n 或\r?
【问题讨论】:
-
您似乎没有使用 jQuery,我什至不确定这是否是您要查找的内容,但是您可以正常使用
if ($.browser.msie) { /* handle the \n here */}和其余的,但是您d 必须使用 jQuery 或转到 jQuery 源并获取$.browser.msie的实现并应用相同的检查并以不同于其他浏览器的方式处理它。 -
现场演示: jsfiddle.net/RMeML/1
-
@MilkyWayJoe:如果没有 javascript 解决方案,我可以使用 jQuery。
标签: javascript cross-browser line-breaks pre textnode