show/hide layers - Probleme mit Netscape
Steffi
- javascript
0 Kai
Ich weiß ja, das Thema gibts recht oft, aber ich hab nirgends eine Lösung für genau mein Problem gefunden:
Bei meinem Menü sind die Hauptmenüpunkte in einem anderen Frame als die "Aufklappmenüs" - sprich die Ebenen, die sichtbar werden sollen.
Hab einfach den (wirren) JS-Code verwendet, den der Dreamweaver produziert:
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}
Aufruf erfolgt ganz normal mit:
onMouseOver="MM_showHideLayers('submagazin?main','','show')" onMouseOut="MM_showHideLayers('submagazin?main','','hide')"
Online anzuschauen ist das ganze mal unter http://www.powerhalse.at/v3
Aber im Netscape/Mozilla hab ich folgendes Problem: wenn ich mitm Mauszeiger über dem Hauptmenüpunkt bin, wird die Ebene problemlos angezeigt, aber wenn ich runter fahren will auf die Ebene selbst, dann gehts auf einmal nicht mehr...
Woran kann das liegen?
Hallo
Aufruf erfolgt ganz normal mit:
onMouseOver="MM_showHideLayers('submagazin?main','','show')" onMouseOut="MM_showHideLayers('submagazin?main','','hide')"Online anzuschauen ist das ganze mal unter http://www.powerhalse.at/v3
Aber im Netscape/Mozilla hab ich folgendes Problem: wenn ich mitm Mauszeiger über dem Hauptmenüpunkt bin, wird die Ebene problemlos angezeigt, aber wenn ich runter fahren will auf die Ebene selbst, dann gehts auf einmal nicht mehr...
Woran kann das liegen?
Vielleicht daran, dass die Methode onMouseOut das "Layer" ausblendet?
Das Mozilla Verhalten ist somit korrekt.
Abhilfe:
Nimm nicht den unlesbaren MM Code und setze einen Timer ein, der die Layer nach einer gewissen Zeit ausblendet. Lösche diesen Timer, wenn der Mauszeiger sich auf dem geöffneten "Layer" befindet.
Alternativ kannst du auch via Flag das "Layer" einfach geöffnet lassen bis man auf einen anderen Menüpunkt geht. Dann solltest du aber ein schließen via onClick realisieren, damit man das Ding wieder zu bekommt.
Aber das sind alles nur Vorschläge...
Gruß
Kai