Popup Menü

Skully

Grünschnabel
Hi hab da nen kleines Problem mit meinem Menü.
Habe mit Fireworks4 nen Popup Menü eigefügt und auch die Position bestimmt. Da ich das ganze Menü mit <div> zentriert habe wird auch das Popup zentriert, was aber nicht sein soll. Wie kann ich nun das Menü dazu bringen an seiner Position zu bleiben? Das Menü soll aber weiterhin zentriert sein.
 
Code:
<td align=""><a href="#" onMouseOut="MM_swapImgRestore();FW_startTimeout();"  onMouseOver="window.FW_showMenu(window.fw_menu_0,533,41);MM_swapImage('index_r2_c12','','interface/index_r2_c12_f2.jpg',1);" ><img name="index_r2_c12" src="interface/index_r2_c12.jpg" width="54" height="24" border="0"></a></td>

das Popup wurde mit Fireworks erstellt. Soll ich die Funktionen auch noch posten?

na jedenfalls ist dieser Part Teil einer Tabelle, die zentriert ist.
 
PHP:
<script language="JavaScript">
<!--
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_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];}
}
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_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function fwLoadMenus() {
  if (window.fw_menu_0) return;
  window.fw_menu_0 = new Menu("root",84,17,"Verdana, Arial, Helvetica, sans-serif",10,"#001545","#022a85","#f2f9fe","#eaf4fe");
  fw_menu_0.addMenuItem("Board","window.open('http://blabla.de', '_blank');");
  fw_menu_0.addMenuItem("Guestbook","location='?show=gb.php'");
  fw_menu_0.addMenuItem("IRC","location='?show=irc.php'");
   fw_menu_0.bgImageUp="interface/fwmenu1_84x17_up.gif";
   fw_menu_0.bgImageOver="interface/fwmenu1_84x17_over.gif";
   fw_menu_0.hideOnMouseOut=true;

  fw_menu_0.writeMenus();
} // fwLoadMenus()

//-->
</script>

PHP:
<script language="JavaScript1.2" src="fw_menu.js"></script>
<script language="JavaScript1.2">fwLoadMenus();</script>
Das wird im Body aufgerufen. Eine externe js Datei, die FW erstellt hat.
 
Gyarrgh! Ich wußte ich würde es bereuen...
Aber da fehlt immer noch was. Die Unterklasse 'window.FW_showmenu' ist nirgends angegeben.

Aber ich kann zumindest mal mutmaßen:
Ich denke, das Problem liegt nicht am Javascript sondern an den CSS. Weil wenn du das übergeordnete Stylesheet zentrierst, werden logischerweise alle untergeordneten Stylesheets mitgenommen, da sich deren Position immer nach dem Elternobjekt richtet.
 
Ich habe die Zentrierung aber nicht CSS gemacht, nur halt per div :)

Hier die fehlende Funktion.
Code:
function FW_showMenu(menu, x, y, child) {
	if (!window.fwWroteMenu) return;
	FW_clearTimeout();
	if (document.layers) {
		if (menu) {
			var l = menu.menuLayer || menu;
			l.left = 1;
			l.top = 1;
			hideActiveMenus();
			if (this.visibility) l = this;
			window.ActiveMenu = l;
		} else {
			var l = child;
		}
		if (!l) return;
		for (var i=0; i<l.layers.length; i++) { 			   
			if (!l.layers[i].isHilite) 
				l.layers[i].visibility = "inherit";
			if (l.layers[i].document.layers.length > 0) 
				FW_showMenu(null, "relative", "relative", l.layers[i]);
		}
		if (l.parentLayer) {
			if (x != "relative") 
				l.parentLayer.left = x || window.pageX || 0;
			if (l.parentLayer.left + l.clip.width > window.innerWidth) 
				l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth);
			if (y != "relative") 
				l.parentLayer.top = y || window.pageY || 0;
			if (l.parentLayer.isContainer) {
				l.Menu.xOffset = window.pageXOffset;
				l.Menu.yOffset = window.pageYOffset;
				l.parentLayer.clip.width = window.ActiveMenu.clip.width +2;
				l.parentLayer.clip.height = window.ActiveMenu.clip.height +2;
				if (l.parentLayer.menuContainerBgColor) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor;
			}
		}
		l.visibility = "inherit";
		if (l.Menu) l.Menu.container.visibility = "inherit";
	} else if (FIND("menuItem0")) {
		var l = menu.menuLayer || menu;	
		hideActiveMenus();
		if (typeof(l) == "string") {
			l = FIND(l);
		}
		window.ActiveMenu = l;
		var s = l.style;
		s.visibility = "inherit";
		if (x != "relative") 
			s.left = s.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0;
		if (y != "relative") 
			s.top = s.pixelTop = y || (window.pageY + document.body.scrollTop) || 0;
		l.Menu.xOffset = document.body.scrollLeft;
		l.Menu.yOffset = document.body.scrollTop;
	}
	if (menu) {
		window.activeMenus[window.activeMenus.length] = l;
	}
}
 
chaja, aaber:
div == css :)

bevor ich mich jetzt in diesem Script verliere (was btw noch immer nicht vollständig ist - es fehlen noch die diversen Unterklassen von 'Menu') probier doch einfach mal das Ding mit <center> zu zentrieren und in die Tabelle align="left" reinzuschreiben.

Oder such dir ein vernünftiges Script weil was Fireworks da ausspuckt ist echt abartig.
 

Neue Beiträge

Zurück