Hallo erstmal,
ich hätte da eine Frage zum Verständnis.
Ich habe auf einer Seite ein JavaScript für einen Text-Ticker. Zufällig habe ich nun bemerkt, dass dieses Script sich im Speicherverbrauch im IE anders verhält als bei Opera oder gar bei Firefox. Während beim IE mit Aufruf der Seite der Speicherverbrauch mit einem Mal etwas ansteigt und dann konstant bleibt, erhöht er sich bei Opera und Firefox kontinuierlich bis zu einem bestimmtem Wert, um dann wieder auf den Ausgangswert abzufallen und danach wieder anzusteigen. Bei Opera hält sich das in Grenzen; liegt etwa im Bereich des IE. Aber Firefox schlägt gewaltig zu: hier wird Speicher ohne Ende „gefressen“ und erst wenn alles weg ist (und das gesamte System sich dadurch stark verlangsamt), wird freigegeben und das Spielchen geht erneut los.
Ich weiß nun nicht, ob das letztlich ein JavaScript-Problem ist oder ein Browserproblem (Einstellung? - womit ich dann im falschen Forum wäre), aber vieleicht hat jemand eine Idee?
Vielen Dank schon mal für Euere Antworten!
Gruß, Robi
Und hier auf alle Fälle mal das Script:
<!-- Begin
var myMainMessage=„Ticker-Text“
var speed=175;
var scrollingRegion=100;
var startPosition=0;
function mainTextScroller() {
var mainMessage=myMainMessage;
var tempLoc=(scrollingRegion*3/mainMessage.length)+1;
if (tempLoc<1) {tempLoc=1}
var counter;
for(counter=0;counter<=tempLoc;counter++)
mainMessage+=mainMessage;
document.mainForm.mainTextScroller.value=mainMessage.substring(startPosition,startPosition+scrollingRegion);
startPosition++;
if(startPosition>scrollingRegion) startPosition=0;
setTimeout(„mainTextScroller()“,speed); }
// End -->
.
.
.
Es ist nicht zu empfehlen, rekursiv in einer Funktion dieselbe Funktion nochmals als Timeout zu setzen. genau dafür gibt es setInterval. Weiters würde ich nicht einem Datenfeld den gleichen Namen geben wie einer JS-Funktion, das ist verwirrend. Strings aneinanderzuhängen mit += macht man nicht, dazu gibt es die Funktion concat(). Diese Zeile ergab beim ersten Test sofort einen „Out of memory“-Fehler. Der optimale Wert für Scrollingregion ist die Länge des Ticker-Texts, anstatt einer Konstante.