Mozilla 1.2 / Javascript & DOM
Bernhard Kamp
- browser
0 Utz
Hallo,
Ich habe ein Problem in Verbindung mit dem neuen Mozilla 1.2
Im folgenden drei Scripte.
Im Beispiel 1 befindet sich die id "hardcoded" im body.
Im Beispiel 2 befindet sich die id "dynamisch geschrieben" im script-Bereich des head.
Im Beispiel 3 befindet sich die id "dynamisch geschrieben" im script-Bereich des body.
---------------------------------------------------------------
Beispiel 1. Funktioniert mit Mozilla unterhalb 1.2 und 1.2
---------------------------------------------------------------
<html>
<head>
<title>Test</title>
<script language="JavaScript" type="text/javascript">
function showit()
{document.getElementById("nav_1").style.visibility="visible";}
</script>
<body onload="showit();">
<div id="nav_1" style="position:absolute;visibility:hidden"><p>test</p></div>
</body>
</html>
---------------------------------------------------------------
Beispiel 2. Funktioniert nicht mit Mozilla 1.2, aber Mozilla unterhalb 1.2
Fehlermeldung bei 1.2 lautet
Error: document.getElementById("nav_1") has no properties
---------------------------------------------------------------
<html>
<head>
<title>Test</title>
<script language="JavaScript" type="text/javascript">
document.write('<div id="nav_1" style="position:absolute;visibility:hidden"><p>test</p></div>');
function showit()
{document.getElementById("nav_1").style.visibility="visible";}
</script>
<body onload="showit();">
</body>
</html>
---------------------------------------------------------------
Beispiel 3. Funktioniert wieder mit Mozilla unterhalb 1.2 und 1.2
---------------------------------------------------------------
<html>
<head>
<title>Test</title>
<script language="JavaScript" type="text/javascript">
function showit()
{
document.getElementById("nav_1").style.visibility="visible";
}
</script>
<body onload="showit();">
<script language="JavaScript" type="text/javascript">
document.write('<div id="nav_1" style="position:absolute;visibility:hidden"><p>test</p></div>');
</script>
</body>
</html>
---------------------------------------------------------------
Offensichtlich wird im Beispiel 2 die id nicht im Objektbaum "eingehängt". Hat jemand eine andere Erklärung ?
Gruß Bernhard
Hallo,
Offensichtlich wird im Beispiel 2 die id nicht im Objektbaum "eingehängt". Hat jemand eine andere Erklärung ?
Ich könnte "Heftige Fehler im Code" als Erklärung anbieten.
<html>
<head>
<title>Test</title>
<script language="JavaScript" type="text/javascript">
document.write('<div id="nav_1" style="position:absolute;visibility:hidden"><p>test</p></div>');
function showit()
{document.getElementById("nav_1").style.visibility="visible";}
</script>
<body onload="showit();">
</body>
</html>
Erstens: Bin ich blind oder fehlt hier </head>?
Zweitens: Im Code steht nichts was den Browser implizit zu der Annahme verleitet, der Head sei zu Ende, bis <body> kommt. Also: Dein Head geht bis zum Body.
Drittens: Du schreibst also via JavaScript einen Div in den Head. Der hat da aber garantiert nichts verloren. Im Head zulässige Elemente findest Du in der HTML-Spec http://www.w3.org/TR/html4/struct/global.html#edef-HEAD.
Fazit: Du hast fehlerhaften Code geschrieben. Es liegt keine fehlerhafte Darstellung von Mozilla 1.2 vor.
Grüße,
Utz
Hallo Utz
Ich könnte "Heftige Fehler im Code" als Erklärung anbieten
Erstens: Bin ich blind oder fehlt hier </head>?
Ups... Du hast natürlich recht. Den habe ich im meinem Original-Script schon drin. Keine Ahnung wie das passiert ist. Habe in der Mail noch rum geschrieben. Möglicherweise ist mir das dabei passiert.
Aber Dein Hinweis auf http://www.w3.org/TR/html4/struct/global.html#edef-HEAD hat mir geholfen. Danke.
Gruß Bernhard