Layer onClick für Mac

creamx

Grünschnabel
Hallo zusammen,

ich habe ein Problem mit einem Javascript, welches beim onClick einen
Layer öffnen soll. Dies funktioniert im IE 5.0 und im Netscape 4.78
auf dem PC wunderbar. Jedoch funktionierts beim IE 5.0 auf Mac nicht richtig. Beim Klick wird der Layer nur kurz geöffnet (eine Sekunde) und der Browser lädt dann die Seite neu. Und der Layer ist wieder verschwunden.



>>> Hier seht Ihr den HTML-Code und das Javscript:


----------------------------------------------------------------------

In der HTML Seite verwende ich mehrere Image-Maps mit welchen ich mit onClick die Layer öffne, resp. schliesse.

Code:
<map name="Map"> 
    <area shape="poly" coords="35,74,104,64,110,85,41,96" href="#"    target="_self" onClick="MM_showHideLayers('layer1','','show','layer2','','hide','layer3','','hide')">
    <area shape="poly" coords="155,64,221,87,215,109,145,84" href="#" target="_self" onClick="MM_showHideLayers('layer1','','hide','layer2','','show','layer3','','hide')">
    <area shape="poly" coords="17,152,84,138,91,161,24,174" href="#" target="_self" onClick="MM_showHideLayers('layer1','','hide','layer2','','hide','layer3','','show')">
</map>

----------------------------------------------------------------------

Hier das verwendete Java-Script:
Code:
<script language="JavaScript" src="../../scripts/layer.js" type="text/javascript">
<!--
function MM_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.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; }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
  

}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>



----------------------------------------------------------------------

Kann mir da jemand weiterhelfen?
 

Christoph

Erfahrenes Mitglied
hehehehe, vergiss es Layer richtig mit nem Mac darzustellen.

hab bis jetzt noch keine IE oder NS version für MAC gesehen die Layer richtig gut darstellt.!!

sry:eek:
 

sam

Erfahrenes Mitglied
versuchs mal so:
Code:
<map name="Map"> 
<area shape="poly" coords="35,74,104,64,110,85,41,96" href="javascript:void 0" onClick="MM_showHideLayers('layer1','','show','layer2','','hide','layer3','','hide')"> 
<area shape="poly" coords="155,64,221,87,215,109,145,84" href="javascript:void 0" onClick="MM_showHideLayers('layer1','','hide','layer2','','show','layer3','','hide')"> 
<area shape="poly" coords="17,152,84,138,91,161,24,174" href="javascript:void 0" onClick="MM_showHideLayers('layer1','','hide','layer2','','hide','layer3','','show')"> 
</map>
 

creamx

Grünschnabel
Hallo

es hat bis auf eine kleine Fehlermeldung mit Deinem Tipp geklappt.

<map name="Map">
<area shape="poly" coords="35,74,104,64,110,85,41,96" href="java script:void 0" onClick="MM_showHideLayers('layer1','','show','layer2','','hide','layer3','','hide')">
</map>


Ich habe aber durch Deinen Tipp den Fehler welcher im
Mac ensteht entdeckt.


... href="#" target="_self"

>>> das Tag target benötige ich bei meiner Funktion nicht
und ist auch verantwortlich das es im Mac nicht richtig funktioniert.


Gruss
creamx