如何在IE8中使用javascript替换换行符?

时间:2011-10-07 22:24:06

标签: javascript jquery internet-explorer-8 newline line-breaks

我在Stackoverflow上搜索了几个小时和几个小时,没有人的解决方案可以在Internet Explorer 8中运行。

我收到了这样的纯文档:

This is a legal agreement ("Agreement") between you and ...
License
Subject to you continued and ongoing compliance with the terms and conditions set ...
Restrictions
Except as otherwise explicitly provided in this Agreement, ...
Ownership
Except for this license granted to you, as between you and ...
Disclaimer of Warranties
Use at your own risk. ...

我需要使用双线换行符(<br/><br/>)替换换行符(换行符,回车符,无论你想要什么),以使文本看起来更正常。

来自jQuery convert line breaks to br (nl2br equivalent)的nl2br函数在大多数浏览器中都能正常工作。但是,我的客户使用IE8。

继续尝试使用IE8(或现代Internet Explorer设置为IE8模式)的nl2br功能;它不起作用。

有谁知道为什么它在IE8中不起作用?以及如何实现目标?

P.S。我在这里放了一些代码http://jsfiddle.net/L2Ufj/2/ ,奇怪的是它可以通过jsfiddle在IE8中运行,但是如果你将它复制到其他地方并运行它是真的,它将无法在IE8中运行。 / p>

2 个答案:

答案 0 :(得分:2)

在IE8中解决此问题的一种方法是将换行符转换为IE8在页面上呈现 之前识别的“令牌”。然后,一旦它被渲染,在成功处理程序中,例如,您可以搜索该标记并替换为<br>或您想要的任何内容:

e.g。

预渲染(我使用&lt; br&gt;作为我的令牌,但你可以使用任何东西)

textToEdit = textToEdit.replace(/\n/g, '<br>');

发布渲染(搜索您的令牌并替换为<br>或您想要的任何内容)

renderedTextWrapper.innerHTML = renderedTextWrapper.innerHTML.replace(/&lt;br&gt;/g, '<br>');

答案 1 :(得分:1)

当你检索元素的innerHTML时,IE会在给你结果之前将innerHTML转换为“标准格式”(通过将多个空格折叠成一个,删除换行符......等)。

因此,您无法在IE中使用innerHTML中找到任何换行符。真是个坏消息。

我认为最可行的&amp;简单的方法是将文本存储在<textarea>标记内,而不是普通<div>。当你得到它的价值而不是innerHTML时,IE将只留下<textarea>

originalText=document.getElementById('EULA_content').value

当然,当你得到newText时,你应该将它附加到另一个div元素。