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で動作させる方法を知っている人はいますか? ありがとう!!

UPDATE したがって、IEで使用すると、置換関数の前に改行が折りたたまれるため、jQueryが原因のようです。

上記で行ったように、xml 応答からデータを取得する別の (jQuery 以外の) メソッドの使用を手伝ってくれる人はいますか? 改行を保持するものは?

ご協力いただきありがとうございます!

4

2 に答える 2

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'));
    }
}
于 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 に答える