IE的问题从$(“#content”)中删除新行.text()

时间:2010-09-01 15:45:16

标签: javascript jquery internet-explorer internet-explorer-8

IE的问题从$(“#content”)。text()

中删除新行

HTML代码

<div id="content">
<p>hello world</p>
<p>this is a paragraph</p>
</div>

jQuery代码

alert($("#content").text()); 

结果(IE) IE删除新行(\ n)如何解决此问题?

hello worldthis is a paragraph

结果(FF)

hello world
this is a paragraph

看看: http://jsfiddle.net/vB3bx/

4 个答案:

答案 0 :(得分:2)

如果使用div的innerText属性,它可以正常工作。尝试替换

alert($("#content").text());

alert( document.getElementById( "content" ).innerText );

答案 1 :(得分:2)

Internet Explorer将所有空白字符和换行符标准化为SPACE字符。据我所知,你无能为力。

顺便说一下,似乎IE9 beta改变了这种行为。我得到了新的一行。

答案 2 :(得分:1)

我很确定Sime Vidas是对的。我已经尝试过几乎所有东西,无论我尝试什么(innerText,innerHTML,jQuery方法,TextRange,克隆元素并将其置于pre元素等等),白色空间被删除。我猜IE会在任何类型的电话上删除它。它在渲染过程中显然是因为白色空间:pre会显示它,但通过javascript检索它将始终删除除pre和textarea内容之外的空白区域。

此行为在IE9中已更改。旧版本中唯一的解决方案是在可能的情况下用服务器上的新标记(或任何真正的分号等)替换新的行字符,然后在检索文本内容后将它们替换回\ n在javascript中。

答案 3 :(得分:0)

如果您考虑以下事项,不确定是否会找到使用text()的解决方案:

  

由于HTML解析器的变化   在不同的浏览器中,文本   返回可能会有所不同   其他空白区域。

http://api.jquery.com/text/