IE 9 komprimiert Leerzeichen innerhalb von XML DOM

9

Ich habe eine JavaScript-Routine, die einen XML-Stream über AJAX ergreift und dann analysiert. Es funktioniert gut in FF und Chrome, aber in IE 9, wenn es aufeinanderfolgende Line Feeds innerhalb eines Knotens gibt, komprimiert IE sie in ein Leerzeichen und einen Zeilenvorschub.

Insbesondere, wenn retNode ein xml-Knoten ist, hat retNode.text den komprimierten Leerraum in IE, enthält aber alle Zeichen in FF und Chrome.

Ich habe versucht, meine eigene Routine zu schreiben, um das XML zu parsen, aber das scheint fragil und Zeitverschwendung. Ich habe versucht, mit der PreserveWhitespace-Eigenschaft, aber das scheint nicht in Javascript verfügbar zu sein. Ich habe versucht, retNode.nodeValue anstelle von retNode.text zu verwenden, aber nodeValue hatte keinen Wert.

Ich würde eine Lösung bevorzugen, die jquery nicht verwendet, weil ich jquery nicht kenne, und ich bin mir nicht sicher, welchen anderen Code ich hinzufügen müsste, damit jquery funktioniert.

Vielen Dank im Voraus!

    
user1647747 05.09.2012, 02:36
quelle

2 Antworten

1

preserveWhiteSpace ist in JavaScript verfügbar.

Haben Sie den folgenden Code ausprobiert?

%Vor%     
Julien Royer 16.11.2012 09:59
quelle
0

Es sollte nur Leerzeichen zwischen Tags sein, die Sie verlieren. Leerzeichen zwischen Nicht-Tags (z. B. zwischen Strings innerhalb eines Tagspaars) sollten immer beibehalten werden.

Mit anderen Worten: <tag> </tag> wird <tag></tag> , während <tag>foo bar</tag> unverändert bleibt.

Wenn Sie whitespace zwischen zwei Tags erhalten möchten und preserveWhiteSpace aus irgendeinem Grund nicht funktioniert, dann müssen Sie, wenn möglich, &#160; in Ihre XML-Quelle einfügen (die numerische Version von &nbsp; , die Sie unter normalen Umständen nicht verwenden können, da es sich um ein unzulässiges XML-Zeichen handelt, dh, wenn Sie die Entität nicht definiert haben)

    
Coder 20.12.2012 21:51
quelle