Gössenlimit bei Firefox new Array()? oder eher Dateileseproblem?
Michael Schulz
- javascript
0 Micha
Hallo zusammen,
ich lese mit folgenden Funktionen Dateien von meinem WebServer im Browser ein und bearbeite diese Dateien danach via Javascript.
var MyHistory = new Array();
function HistoryLoaded(e)
{window.setTimeout("FillInHistory()", 1000);}
// ***************************************************************
function initHistory()
{
var ieXmlDoc;
CheckThisBrowser();
if (BrowserIsIExplorer)
{
nnSecondXmlDoc = document.getElementsByTagName('xml').item(1);
FillInHistory();
}
else
{
nnSecondXmlDoc = document.implementation.createDocument("", "history", null);
nnSecondXmlDoc.addEventListener("load", HistoryLoaded, false);
nnSecondXmlDoc.load("history.xml");
}
}
// ***************************************************************
var MyStr = "0123456789ABCDEF";
function FillInHistory()
{
var allRecs;
var recArr;
var nodeList;
var recdata = "Leer";
var i, j = 0;
allRecs = nnSecondXmlDoc.getElementsByTagName('SERVTABS').item(0);
if (!allRecs) // für den Fall, das es Probleme gibt
{
window.location.href = "problem.htm";
}
else
{
j = 0;
recArr = allRecs.getElementsByTagName('RECORD');
nodeList = recArr[0].getElementsByTagName('DATA');
recdata = nodeList.item(0).firstChild.nodeValue;
for (i=0,j=0; i < recdata.length; i=i+2,j++)
{
MyHistory[j] = (MyStr.indexOf(recdata.charAt(i)) << 4) + MyStr.indexOf(recdata.charAt(i+1)) ;
}
j++;
}
DisplayData();
}
Diesen Weg nutze ich bereits bei mehreren Dateien (<1k groesse) und das ganze funktioniert Problemlos. Nun habe ich jedoch eine Datei, die ist 64K gross.
Lese ich also diese Datei ein, funktioniert unter IE6 alles vom feinsten. Jedoch mit Firefox kommt nur ein Teil der Daten rüber. Wenn ich richtig gerechnet habe ist bei 4K (4096 Byte) schluss.
Eine Fehlermeldung erhalte ich keine. Die erhaltenen Daten sind Plausibel. Die Menge der Daten ist immer gleich.
Gibt es evtl. in Firefox eine Grössen-Limitierung für Arrays auf 4096 Byte?? Das würde das ganze erklären. Wenn ja, gibt es eine Möglichkeit, das zu umgehen/hochzusetzen ohne das ich anfangen muss und 16 4K Arrays zu nutzen?
Wenn meine vorhergehende Annahme nicht zutrifft, hat dann jemand eine Idee woran das ganze liegt??
Danke
Michael
Hallo Michael Schulz,
Wenn ich richtig gerechnet habe ist bei 4K (4096 Byte) schluss.
Du hast Dich nicht verrechnet, siehe diese Archiv-Beitrag.
Mit freundlichem Gruß
Micha