0

我试图在 a 中显示一些数据,<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 中工作的方法吗?谢谢!!

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

正如我在上面所做的那样,任何人都可以帮助使用从 xml 响应中检索数据的替代(非 jQuery)方法吗?一种可以保留换行符的方法?

谢谢你的帮助!

4

2 回答 2

0

Try this:

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

You can then use this function to output text as HTML following way:

// `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'));
    }
}
于 2012-10-18T14:27:50.733 回答
0
var points = $("points", this).text().replace(/\r+/g, '').replace(/\n/g, '<br>'); 
于 2012-10-18T14:37:54.693 回答