Moin Susann,
Resultat: kein Absturz aber ansonsten völlige Ignoranz meiner Absicht :-( und diese ist:
Beibehalten der Javascript-Variablen bei NS4 nach einem Browserfenster-Resize.
Das Thema hat mich auch mal interessiert, daher hab ich ne kleine Testseite geschrieben:
========8><=======================================================
<html><head>
<script language="JavaScript">
<!--
A = 3.14159,
B = 2.71828,
text = "Moin Moin!";
var merkstring;
var hexcode="0123456789ABCDEF";
function codiere_merkstring() {
result = "";
for(i=0; i<merkstring.length; ++i) {
c = merkstring.charCodeAt(i);
c_lo = c%16;
c_hi = parseInt(c/16);
result = result+hexcode.charAt(c_hi)+hexcode.charAt(c_lo);
}
self.name = result;
}
function decodiere_merkstring() {
merkstring="";
for(i=0; i<self.name.length/2; ++i) {
c_hi = hexcode.indexOf(self.name.charAt(2*i));
c_lo = hexcode.indexOf(self.name.charAt(2*i+1));
merkstring=merkstring+String.fromCharCode(c_hi*16 + c_lo);
}
}
function variablen_merken() {
merkstring = "A="+A+"; B="+B+"; text='"+text+"';";
codiere_merkstring();
}
function variablen_lesen() {
decodiere_merkstring();
eval(merkstring);
}
function showVar() {
alert('A = '+A+' B = '+B+' text = '+text);
}
function changeVar() {
A = 4711;
B = 2000;
text = "Huch? Wer da??";
// Wird folgende Zeile auskommentiert, so haben A und B
// nach einem Reload wieder ihre alten Werte.
variablen_merken();
}
//-->
</script>
</head>
<body onLoad="variablen_lesen();" >
<a href="" onClick="showVar();return false;">Variablen zeigen</a><br>
<a href="" onClick="changeVar();return false;">Variablen Ändern</a><br>
<a href="" onClick="alert(self.name);return false;">Fenstername zeigen</a>
</body>
</html>
========8><=======================================================
Wie das ganze funktioniert: Der Fenstername self.name wird zum Zwischenspeichern der Variablen "mißbraucht". Als erste Idee käme einen da in den Sinn, einfach
self.name = "A="+A+"; B="+B+";";
zu schreiben, um später einfach mit eval(self.name) wieder die alten Werte in A und B einlesen zu lassen. Der Haken an der Sache ist aber, daß Zeichen wie '=' und auch andere für self.name nicht zulässig sind. Daher habe ich noch zwei Funktionen hinzugefügt, die einen String in Hexcode - und zurück konvertieren können (codiere_merkstring() und decodiere_merkstring()). Der Hexcode wird nun in self.name gespeichert und besteht somit nur aus zulässigen Zeichen. Beim onLoad-Event wird nun self.name ausgelesen, als Klartext in die Variable "merkstring" konvertiert und auf "merkstring" die eval()-Funktion losgelassen. Kleine "Sicherheitslücke": self.name sollte am Anfang leer sein (ist es normalerweise) oder einen hexcode enthalten, der zu wohldefinierten Variablenwerten führt. Bei window.open(...) kann mit name="..." z.B. gleich der Fenstername festgelegt werden. Vielleicht fällt dazu jemandem ja noch was eleganteres ein...?!
Bis dannundwann
Andreas