我正在尝试在<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> <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)方法吗?一个可以保留换行符?
感谢您的帮助!
答案 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>');