Matze: Mozilla document.writeln

Beitrag lesen

Hallo NG,

ich bin nicht so der DHTML-Guru. Ich habe bei einem Kunden eine Seite übernommen die ein Tree-Menü hat das weder mit NS6, Mozilla noch Opera funktioniert :-(.

Ich habe zwar zumindest das Menü schon sichtbar hinbekommen, habe aber ein merkwürdiges verhalten.

Code unten: [SNIP]

Im Body sind noch 2 Layer für MS bzw. NS angegeben:
<layer id="NetscapeMENU"></layer>
<div align="left" id="MicrosoftMENU"></div>

Eigentlich müsste ich doch meiner nachträglich eingebauten Browsererkennung (document.getElementById) auch den Layer bzw. DIV ID mitgeben ?.

Aber mein eigentliches Problem ist, dass im Mozilla das Menü jetzt aufgebaut wird.In der Statuszeile wird auch der Aufruf "javascript:openandclose(3) z.B. korrekt angezeigt. Er öffnet aber nicht den Baum. Lt. Javascript-Console würde er function openandclose nicht finden.

Für jeden Tip vielen Dank im voraus.

Grüsse Matthias

[SNIP]
for (i=0;i<=menublock.length-1;i++) {
 showsubmenus[i]=-1
}
function openandclose(visi) {
 showsubmenus[visi]=(-1)*showsubmenus[visi]
 var menucontent=""
 for (i=0;i<=menublock.length-1;i++) {
  menusplit=menublock[i].split(";")
  urlsplit=menusplit[8].split("|")
  if (menusplit[3]==1) {font_weight_main="<b>"}
  if (menusplit[3]==0) {font_weight_main=""}
  if (menusplit[7]==1) {font_weight_sub="<b>"}
  if (menusplit[7]==0) {font_weight_sub=""}
  menucontent+=font_weight_main+"<a href='javascript:openandclose("+i+")'><font face="+menusplit[0]+" color="+menusplit[2]+" size="+menusplit[1]+">"+urlsplit[0]+"</font></a><br>"
  if (showsubmenus[i]==1) {
   for (ii=9;ii<=menusplit.length-1;ii++) {
    urlsplit=menusplit[ii].split("|")
       menucontent+=font_weight_sub+"   <a href="+urlsplit[1]+" target="+urlsplit[2]+"><font face="+menusplit[4]+" color="+menusplit[6]+" size="+menusplit[5]+">"+urlsplit[0]+"</font></a><br>"
   }
  }
 }
   if (document.getElementById ) {
    document.writeln(menucontent)
    document.close()
 }
 if (document.all) {
  MicrosoftMENU.innerHTML=menucontent
 }

if (document.layers) {
  document.NetscapeMENU.document.write(menucontent)
  document.NetscapeMENU.document.close()
 }
}

[/SNIP]