Fehler mit onLoad und document.write bei Netscape
Franz v. Gordon
- javascript
Folgender Programmteil liefert bei mir mit dem NS 4.07 mit der "Javascript:"-Console
die Meldung "m is not defined." und der Browser arbeitet das Script nicht weiter ab.
Beim MS IE klappt es wie geplant.
In einigen Postings find ich auch diese Zusammenhänge, dass dann die Seite nicht funktioniert - vielleicht
eine Hilfe.
<html>
<head>
<title>Test</title>
</head>
<body onLoad="loop()">
<script TYPE="text/javascript" LANGUAGE="javascript1.2">
<!--
function loop()
{
for (m = 0; m < 5; m++)
{
// alert(m);
document.write(m + " ");
}
}
//loop();
//-->
</script>
</body>
</html>
Nach vielen Tests (Dauer: ein Monat, Lösung erstmal mit newWindow() - da geht's)
habe ich den Fall jetzt genauer untersucht:
Das 'onLoad' und das 'document.write' vertragen sich nicht. Wenn ich die Ausgabe mit
'alert()' statt 'document.write' mache, ist es ok. Wenn beide Zeilen aktiv sind, sehe ich,
dass beim ersten Aufruf von 'document.write' die Fehlermeldung kommt.
Es nützt auch nichts, das Script in den <HEAD>-Teil zu verschieben - der Fehler bleibt.
Ohne das 'OnLoad="loop()"' hinter <body>, mit dem Aufruf kurz vor Ende des Scripts
(hier auskommentiert) klappt es gut.
Wollte dieses als Tip für andere hier anmerken, damit es ihnen nicht so geht wie mir
(wochenlange Fehlersuche), oder weiß jemand warum NS hier so reagiert und MS IE ganz normal?
Ich kenne C sehr gut, aber C++ noch nicht.
Gruß
Franz
hallo franz,
unter www.developer.netscape.com ist eine eigene rubrik für ns-bugs eingerichtet (und das aus gutem grund, aus sicht eines ie-nutzers :) dort findest du auch sicherlich das document.write()-bug unter bestimmten vorraussetzungen.
ich persönlich würde bei einer meldung von "m is not defined." das tun was dort steht und zwar m definieren aber das hast du sicherlich auch schon gemacht.
good luck
malcom
Hi,
Folgender Programmteil liefert bei mir mit dem NS 4.07 mit der "Javascript:"-Console
die Meldung "m is not defined." und der Browser arbeitet das Script nicht weiter ab.
nach dem ersten document.write() ist das aktuelle Dokument mit allen Variablen überschrieben, und schon existiert Dein m nicht mehr. Deine Schlußfolgerung, onLoad und document.write() würden sich nicht vertragen, ist also schon der erste Schritt zur Lösung gewesen.
Cheatah