回车在IE9中返回替换

时间:2012-10-18 14:23:07

标签: javascript regex xml-parsing internet-explorer-9

我正在尝试在<div>中显示一些数据,并且IE9没有保留多个回车符。这在Chrome中运行良好,但不适用于IE9(它只添加了<br/>)以下是代码:

$.get(url,function(xml){
  $("record",xml).each(function(){
    var profile= $("profile",this).text().replace(/\r\n|\r|\n/g,'~').replace(/~~/g,'<\/p>&nbsp;<p>').replace(/~/g,'<br/>');
    profileRpt += profile
  });
});

对此的思考过程是规范化,然后为双回车添加<p>,为单次返回添加<br>

我也尝试过简单的替换,

var points= $("points",this).text().replace(/\n\r?/g, '<br />');

并且这在Chrome中运行良好,但在IE9中没有。

有没有人知道我可以在IE9中使用它的方法?谢谢!

更新 因此,似乎jQuery是在IE中使用时的罪魁祸首,因为它在任何替换函数之前折叠了换行符。

如上所述,任何人都可以帮助使用从xml响应中检索数据的备用(非jQuery)方法吗?一个可以保留换行符?

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

试试这个:

function unifyLineFeeds = function(str) {
    return str.replace("\r\n", "\n").replace("\r", "\n");
}

然后,您可以使用此功能以下列方式将文本输出为HTML:

// `text` var contains text with line ununified line feed characters.
text = unifyLineFeeds(text);

var lines = text.split("\n"),
    count = lines.length,
    lastIndex = count - 1;

var container = document.getElementById('someContainerToShowFormattedText');

for (var i = 0; i < count; i++) {
    container.appendChild(document.createTextNode(lines[i]));

    if (i < lastIndex) {
        container.appendChild(document.createElement('br'));
    }
}

答案 1 :(得分:0)

var points = $("points", this).text().replace(/\r+/g, '').replace(/\n/g, '<br>');