Jurik: responseXML Problem beim FireFox

Beitrag lesen

Na okay ... also ich hab den Bug bei FF reportet und rausgefunden, dass des schon seit 2003 bekannt ist.

Und jetzt kommt der Hammer *lach*...

Also die Gecko Engine ist die einzige Engine die nodeValues von XML files bei 4096 aufteilt. Und dies wohl aus Performance-Gründen.

MozDev Bug Link: https://bugzilla.mozilla.org/show_bug.cgi?id=194231

Der Witz ist echt, dass die Developer selber unter sich uneins sind ob sie das machen 'dürfen' oder nicht. Aber sche**** ist es schon, dass sie es machen aber niemandem sagen ;) - die Lösung war dann versteckt in irgendeiner der Posts ... "However, Mozilla splits consecutive block of text in a HTML Tag into multiple textNode(s) of 4KB. "

Sprich: ich hab ein nodeValue obj[0] mit 6096 bytes

IE: obj[0] mit 6096 bytes
opera: obj[0] mit 6096 bytes
firefox: obj[0] mit 4096 bytes und obj[1] mit 2000 bytes

Jetzt ist nur die Frage wie man es dynamisch ausliest.

Hier der Link: http://test.wii-connection.de/test_stuff/xml-test/xml.html

Und hier der Quellcode nochmal (etwas modifiziert):

HTML:
<html>
 <head>
 <title>AJAX</title>
 <script type="text/javascript">
 var http = null;
 if (window.XMLHttpRequest) {
    http = new XMLHttpRequest();
 } else if (window.ActiveXObject) {
    http = new ActiveXObject("Microsoft.XMLHTTP");
 }

window.onload = function() {
    if (http != null) {
       http.open("GET", "test.xml", true);

http.onreadystatechange = ausgeben;
       http.send(null);
    }
 }

function ausgeben() {
    if (http.readyState == 4) {
      alert('wrong length ob obj[0] in bytes: '+http.responseXML.getElementsByTagName('links')[0].firstChild.nodeValue.length);
       document.body.innerHTML+= http.responseXML.getElementsByTagName('links')[0].firstChild.nodeValue;
       alert('truncated obj[0] becomes obj[1] in bytes: '+http.responseXML.getElementsByTagName('links')[0].lastChild.nodeValue.length);
       document.body.innerHTML+= http.responseXML.getElementsByTagName('links')[0].firstChild.nodeValue;
    }
 }
 </script>
 </head>
 <body>
 <ul id="Liste"></ul>
 </body>
</html>

XML:
<?xml version="1.0" encoding="UTF-8"?>
<links>{mehr als 4096 chars zum testen eingeben!}</links>

{mehr als 4096 chars zum testen eingeben!} mit mehr als 4096 Zeichen ersetzen.