Firefox (<= 2.0.0.7), parsando la risposta XML di una richiesta con XMLHttpRequest, tronca il textNode a 4096k.
E’ un dato di fatto e ne ho le prove (bestemmie e sangue amaro fino alle 8 di sera un giorno in ufficio). Non so perchè ma è così, e sembra che il comportamento sia condiviso anche da Opera (9.23, la versione che ho attualmente e su cui l’ho riscontrato). Il problema su IE6 e IE7 non si presenta.
Quindi cosa ne fa Firefox degli altri bytes rimanenti del textNode? Alloca N childNodes.
Esiste una soluzione a questo problema, cioè normalizzare l’oggetto XML creato con la responseXML con il metodo normalize()
-
-
function func()
-
{
-
var xmlhttp = new XMLHttpRequest();
-
xmlhttp.open(‘GET’, url, true);
-
xmlhttp.onreadystangechange = function()
-
{
-
if (xmlhttp.readyState == 4)
-
{
-
if (xmlhttp.status == 200)
-
{
-
var doc = xmlhttp.responseXML;
-
var html = ”;
-
if (doc.evaluate())
-
{
-
doc.normalize();
-
html = doc.getElementsByTagName(’string’)[0].childNodes[0].nodeValue;
-
}
-
else
-
html = doc.text;
-
-
return html;
-
}
-
}
-
}
-
}
tip: la funziona evaluate() è utile per capire se si è sotto Firefox\Opera o Internet Explorer e differenziare il metodo di interrogazione dell’XML (perchè ovviamente non sono uguali
)

