Animated Gif: Stoppt und verlangsamt die Ausführung
berdn
- javascript
Hallo Forum,
ich hatte hier ein Script zum Tabellesortieren gefunden,
und habe es mal aus Spaß von document.write auf das DOM-Modell umgestellt. Dann wollte ich das ganze mal ausreizen.
Ich schreibe aus einen Array Daten in 8700 Tabellenreihen in 4 Tabellenspalten.
Das dauert in Firefox ca. 4 Sekunden im IE 6 etwa doppelt solange, Opera ist mit ca. 1,5 Sekunden dr schnellste.
Nun dachte ich zur Renderzeit ein Animated Gif anzu zeigen.
a.) es stoppt beim rendern
b.) auch wenn es stoppt, verlangsamt es das Rendern um ca. 25%
Ich glaube fast das ist normal?
Hier ein kleiner Code-Auszug, der die Tabelle schreibt.
var dataRecordCount = 8700
var SpaltenCount = 5
function foo(array)
{
var myTable = document.getElementById("myTable");
var myTBody = myTable.getElementsByTagName('tbody')[0];
var tmpTR = document.createElement("tr");
var tmpBody = document.createElement("tbody");
for(var j = 0; j <= SpaltenCount; ++j)
{
var tmpTD = document.createElement("td");
if( j > 1)
{
tmpTD.className = "W";
}
tmpTR.appendChild(tmpTD);
}
for(var i = 0; i < dataRecordCount; i++)
{
var tmpTRClone = tmpTR.cloneNode(true);
var tmpNode = document.createTextNode(i+1);
tmpTRClone.childNodes[0].appendChild(tmpNode);
for(var j = 1; j <= SpaltenCount; j++)
{
var tmpNode = document.createTextNode(Array[i * SpaltenCount + (j-1)]);
tmpTRClone.childNodes[j].appendChild(tmpNode) ;
}
tmpBody.appendChild(tmpTRClone);
}
myTable.replaceChild(tmpBody, myTBody);
}
Liebe Grüße,
Bernd
PS: Der Funktionsaufruf liegt in einem image auf einem onclick Event.
PSS: Aber wie gesagt ich halte das Verhalten für recht normal
Hallo berdn,
die meisten Browser (z.B. IE und FF) frieren die Anzeige ein, solange Javascripte laufen. Dieses kannst du umgehen, indem Du Dein Script in kleine Häppchen zerlegst und über setTimeout mit Pausen aufrufst. Ich vermute, dass daher auch Dein animiertes GIF stehen bleibt. Des weiteren vermute ich, das die Animation im Hintergrund weiterläuft und CPU-Zeit verbraucht, auch wenn wegen des Javascripts nichts davon zu sehen ist.
Gruß, Jürgen
Hallo Jürgen,
an ein Timeout hatte ich auch schon gedacht.
Muss ich mal ausprobieren ...
Mit einer Aktivitätsanzeige ist es ja so ein psychologisches Thema.
Läuft so eine Anzeige ist die gefühlte Zeit eine geringere ...
Vieleicht komme ich heute Abend mal zum Ausprobieren.
Vielen Dank,
Bernd