IE存在问题,会从$("#content").text()中删除换行符。

3

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/

可能是 https://dev59.com/LnRB5IYBdhLWcg3wV156 的重复问题,jQuery 的 text() 方法在 Firefox 中保留换行符但在 IE 中不保留。 - Valentin Flachsel
4个回答

2

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

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

使用

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

2

Internet Explorer会将所有的空格和换行符合并成一个空格字符。据我所知,你无法改变这种行为。

顺便说一下,似乎IE9 beta已经改变了这种行为。在其中,我可以得到新的换行符。


1
我非常确定Sime Vidas是正确的。我尝试了几乎所有方法,无论我尝试什么(innerText、innerHTML、jQuery方法、TextRange、克隆元素并将其放入pre元素中等等),都会删除空白。我猜测IE在任何类型的调用中都会将它删除。显然,在呈现过程中它是存在的,因为white-space: pre会显示它,但通过javascript检索它,除了pre和textarea内容之外,始终会删除空格。
这种行为在IE9中已经改变。在旧版本中唯一的解决方案是在可能的情况下在服务器上使用换行符替换
标记(或任何其他字符,如分号),然后在检索文本内容后在javascript中将它们替换回\n。

0

如果您考虑以下内容,不确定是否可以使用text()找到解决方案:

由于不同浏览器中HTML解析器的差异,返回的文本可能会因换行和其他空格而有所不同。

请参阅http://api.jquery.com/text/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接