Stefan D.: Navigation und andere Spielereien

Beitrag lesen

Hallöchen allerseits,

ich hätte da gerne mal'n Problem: 'n "Kunde" will so'n Navigations-Menue haben wo, wenn man mit der Maus über die einzelnen Menue-Punkte fährt, sich noch ein Unter-Menue auftut. So weit hab ich's auch schon (um ehrlich zu sein, ich hab's auch auf einer der zahlreichen JS-Seiten "geklaut").

Aber jetzt zum eigentlichen Problem: Das Ganze ist in einem Frame aufgebaut. Gehe ich nun mit der Maus über einen der Menue-Punkte, tut sich auch ein Unterverzeichnis auf, nur irgendwie hinter dem Main-Frame, sprich man kann das Unterverzeichnis nicht wirklich sehen.

Frage 1: Wie bekomme ich das Menue in den Vordergrund? Frage 2: Wie bekomme ich das JS dazu bewegt die gewünschten Seiten im Main-Frame zu öffnen?

[JS und ich sind wie der Teufel und das Weihwasser]

<html> <head> <title>Menü</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> all.clsMenuItemNS, .clsMenuItemIE{text-decoration: none; font: bold 12px Arial; color: white; cursor: hand; z-index:100} #MainTable a:hover {color: yellow;} </style> <script language="JavaScript"> var keepstatic=1 //specify whether menu should stay static 0=non static (works only in IE4+) var menucolor="#000000" //specify menu color var submenuwidth=150 //specify sub menus' color </script> </head> <body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" bgcolor="#000000" onload="self.focus();"> <script language="JavaScript"> if (document.all) {n=0;ie=1;ns6=0;fShow="visible";fHide="hidden";} if (document.getElementById&&!document.all) {n=0;ie=0;ns6=1;fShow="visible";fHide="hidden";} if (document.layers) {n=1;ie=0;ns6=0;fShow="show";fHide="hide";}

opr6=ie&&navigator.userAgent.indexOf("Opera")!=-1

//window.onerror=new Function("return true") // Function Menu()

rightX = 0; function Menu() {  this.bgColor     = menucolor;  if (ie) this.menuFont = "bold 12px Arial";  if (n)  this.menuFont = "bold 12px Verdana";  this.fontColor   = "black";

this.addItem    = addItem;  this.addSubItem = addSubItem;  this.showMenu   = showMenu;  this.mainPaneBorder = 0;  this.subMenuPaneBorder = 0;

this.subMenuPaneWidth = submenuwidth;

lastMenu = null;

rightY = 0;  leftY = 0;  leftX = 0;

HTMLstr = "";  HTMLstr += "<!-- MENU PANE DECLARATION BEGINS -->\n";  HTMLstr += "\n";  if (ie||ns6) HTMLstr += "<div id='MainTable' style='position:relative;top:0'>\n"; // if (n)  HTMLstr += "<layer name='MainTable'>\n";  HTMLstr += "<table width='100%' bgcolor='"+this.bgColor+"' border='"+this.mainPaneBorder+"'>\n";  HTMLstr += "<tr>";  if (n) HTMLstr += "<td> ";  HTMLstr += "<!-- MAIN MENU STARTS -->\n";  HTMLstr += "<!-- MAIN_MENU -->\n";  HTMLstr += "<!-- MAIN MENU ENDS -->\n";  if (n) HTMLstr += "</td>";  HTMLstr += "</tr>\n";  HTMLstr += "</table>\n";  HTMLstr += "\n";  HTMLstr += "<!-- SUB MENU STARTS -->\n";  HTMLstr += "<!-- SUB_MENU -->\n";  HTMLstr += "<!-- SUB MENU ENDS -->\n";  HTMLstr += "\n";  if (ie||ns6) HTMLstr+= "</div>\n"; // if (n)  HTMLstr+= "</layer>\n";  HTMLstr += "<!-- MENU PANE DECALARATION ENDS -->\n"; }

function addItem(idItem, text, hint, location, altLocation) {  var Lookup = "<!-- ITEM "+idItem+" -->";  if (HTMLstr.indexOf(Lookup) != -1)  {   alert(idParent + " already exist");   return;  }  var MENUitem = "";  MENUitem += "\n<!-- ITEM "+idItem+" -->\n";  if (n)  {   MENUitem += "<ilayer name="+idItem+">";   MENUitem += "<a href='.' class=clsMenuItemNS onmouseover="displaySubMenu('"+idItem+"')" onclick="return false;">";   MENUitem += "| ";   MENUitem += text;   MENUitem += "</a>";   MENUitem += "</ilayer>";  }  if (ie||ns6)  {   MENUitem += "<td>\n";   MENUitem += "<div id='"+idItem+"' style='position:relative; font: "+this.menuFont+";'>\n";   MENUitem += "<a ";   MENUitem += "class=clsMenuItemIE "; //  MENUitem += "style='text-decoration: none; font: "+this.menuFont+"; color: "+this.fontColor+"; cursor: hand;' ";   if (hint != null)    MENUitem += "title='"+hint+"' ";   if (location != null)   {    MENUitem += "href='"+location+"' ";    MENUitem += "onmouseover="hideAll()" ";   }   else   {    if (altLocation != null)     MENUitem += "href='"+altLocation+"' ";    else     MENUitem += "href='.' ";    MENUitem += "onmouseover="displaySubMenu('"+idItem+"')" ";    MENUitem += "onclick="return false;" "   }   MENUitem += ">";   MENUitem += "| \n";   MENUitem += text;   MENUitem += "</a>\n";   MENUitem += "</div>\n";   MENUitem += "</td>\n";  }  MENUitem += "<!-- END OF ITEM "+idItem+" -->\n\n";  MENUitem += "<!-- MAIN_MENU -->\n";

HTMLstr = HTMLstr.replace("<!-- MAIN_MENU -->\n", MENUitem); }

function addSubItem(idParent, text, hint, location) {  var MENUitem = "";  Lookup = "<!-- ITEM "+idParent+" -->";  if (HTMLstr.indexOf(Lookup) == -1)  {   alert(idParent + " not found");   return;  }  Lookup = "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->";  if (HTMLstr.indexOf(Lookup) == -1)  {   if (n)   {    MENUitem += "\n";    MENUitem += "<layer id='"+idParent+"submenu' visibility=hide bgcolor='"+this.bgColor+"'>\n";    MENUitem += "<table border='"+this.subMenuPaneBorder+"' bgcolor='"+this.bgColor+"' width="+this.subMenuPaneWidth+">\n";    MENUitem += "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";    MENUitem += "</table>\n";    MENUitem += "</layer>\n";    MENUitem += "\n";   }   if (ie||ns6)   {    MENUitem += "\n";    MENUitem += "<div id='"+idParent+"submenu' onmouseout=operahide() style='position:absolute; visibility: hidden; z-index:100; width: "+this.subMenuPaneWidth+"; font: "+this.menuFont+"; top: -300;'>\n";    MENUitem += "<table border='"+this.subMenuPaneBorder+"' bgcolor='"+this.bgColor+"' width="+this.subMenuPaneWidth+">\n";    MENUitem += "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";    MENUitem += "</table>\n";    MENUitem += "</div>\n";    MENUitem += "\n";   }   MENUitem += "<!-- SUB_MENU -->\n";   HTMLstr = HTMLstr.replace("<!-- SUB_MENU -->\n", MENUitem);  }

Lookup = "<!-- NEXT ITEM OF SUB MENU "+ idParent +" -->\n";  if (n)  MENUitem = "<tr><td><a class=clsMenuItemNS title='"+hint+"' href='"+location+"'>"+text+"</a><br></td></tr>\n";  if (ie||ns6) MENUitem = "<tr><td><a class=clsMenuItemIE title='"+hint+"' href='"+location+"'>"+text+"</a><br></td></tr>\n";  MENUitem += Lookup;  HTMLstr = HTMLstr.replace(Lookup, MENUitem);

}

function showMenu() {  document.writeln(HTMLstr); }

// Private declaration function displaySubMenu(idMainMenu) {  var menu;  var submenu;  if (n)  {   submenu = document.layers[idMainMenu+"submenu"];   if (lastMenu != null && lastMenu != submenu) hideAll();   submenu.left = document.layers[idMainMenu].pageX;   submenu.top  = document.layers[idMainMenu].pageY + 25;   submenu.visibility = fShow;

leftX  = document.layers[idMainMenu+"submenu"].left;   rightX = leftX + document.layers[idMainMenu+"submenu"].clip.width;   leftY  = document.layers[idMainMenu+"submenu"].top+    document.layers[idMainMenu+"submenu"].clip.height;   rightY = leftY;  } else if (ie||ns6) { //alert(document.getElementById(idMainMenu+"submenu").id)   menu = ie? eval(idMainMenu) : document.getElementById(idMainMenu);   submenu = ie? eval(idMainMenu+"submenu.style") : document.getElementById(idMainMenu+"submenu").style;   submenu.left = calculateSumOffset(menu, 'offsetLeft'); //  submenu.top  = calculateSumOffset(menu, 'offsetTop') + 30;   submenu.top  = menu.style.top+23;   submenu.visibility = fShow;   if (lastMenu != null && lastMenu != submenu) hideAll();

leftX  = ie? document.all[idMainMenu+"submenu"].style.posLeft : parseInt(document.getElementById(idMainMenu+"submenu").style.left);   rightX = ie? leftX + document.all[idMainMenu+"submenu"].offsetWidth : leftX+parseInt(document.getElementById(idMainMenu+"submenu").offsetWidth);

leftY  = ie? document.all[idMainMenu+"submenu"].style.posTop+    document.all[idMainMenu+"submenu"].offsetHeight : parseInt(document.getElementById(idMainMenu+"submenu").style.top)+parseInt(document.getElementById(idMainMenu+"submenu").offsetHeight);   rightY = leftY;  }  lastMenu = submenu; }

function hideAll() {  if (lastMenu != null) {lastMenu.visibility = fHide;lastMenu.left = 0;} }

function calculateSumOffset(idItem, offsetName) {  var totalOffset = 0;  var item = eval('idItem');  do  {   totalOffset += eval('item.'+offsetName);   item = eval('item.offsetParent');  } while (item != null);  return totalOffset; }

function updateIt(e) {  if (ie&&!opr6)  {   var x = window.event.clientX;   var y = window.event.clientY;

if (x > rightX || x < leftX) hideAll();   else if (y > rightY) hideAll();  }  if (n||ns6)  {   var x = e.pageX;   var y = e.pageY;

if (x > rightX || x < leftX) hideAll();   else if (y > rightY) hideAll();  } }

function operahide(){         if (opr6){         if (!MainTable.contains(event.toElement))         hideAll() } }

if (ie||ns6) {  document.body.onclick=hideAll;  document.body.onscroll=hideAll;  document.body.onmousemove=updateIt; } if (document.layers) {  window.captureEvents(Event.MOUSEMOVE);  window.captureEvents(Event.CLICK);  window.onmousemove=updateIt;  window.onclick=hideAll; }

</script> <script language="JavaScript">

function showToolbar() { // AddItem(id, text, hint, location, alternativeLocation); // AddSubItem(idParent, text, hint, location);

menu = new Menu();  menu.addItem("homeid", "Home", "Home",  "main.htm");  menu.addItem("nsstrukturenid", "NS-Strukturen", "NS-Strukturen",  null, null);  menu.addItem("nazipropagandaid", "Nazi-Probaganda", "Nazi-Propaganda",  "nspropaganda.htm");  menu.addItem("widerstandid", "Der Widerstand", "Der Widerstand",  "widerstand.htm");  menu.addItem("schulwesenid", "Schulwesen", "Schulwesen",  null, null);  menu.addItem("heimatmuseumid", "Heimatmuseum", "Heimatmuseum",  "heimatmuseum.htm");  menu.addItem("arbeitslagerid", "Arbeitslager", "Arbeitslager",  "arbeitslager.htm");  menu.addItem("judenverfolgungid", "Judenverfolgung", "Judenverfolgung",  null, null);

menu.addSubItem("nsstrukturenid", "Organisationen", "Organisationen",  "organisationen.htm");  menu.addSubItem("nsstrukturenid", "Personen", "Personen",  "personen.htm");  menu.addSubItem("nsstrukturenid", "&Ouml;rtlichkeiten", "&Ouml;rtlichkeiten",  "oertlichkeiten.htm");

menu.addSubItem("schulwesenid", "&Uuml;berblick", "&Uuml;berblick",  "ueberblick.htm");  menu.addSubItem("schulwesenid", "Veränderung", "Veränderung",  "veraenderung.htm");  menu.addSubItem("schulwesenid", "Schul-Propaganda", "Schul-Propaganda",  "schulpropaganda.htm");  menu.addSubItem("schulwesenid", "Hitler-Jugend", "Hitler-Jugend",  "hitlerjugend.htm");  menu.addSubItem("schulwesenid", "Kriegsauswirkungen", "Kriegsauswirkungen",  "kriegsauswirkungen.htm");

menu.addSubItem("judenverfolgungid", "Progrom", "Progrom",  "progrom.htm");  menu.addSubItem("judenverfolgungid", "Plünderungen", "Plünderungen",  "pluenderung.htm");  menu.addSubItem("judenverfolgungid", "Synagogenbrand", "Synagogenbrand",  "synagogenbrand.htm");  menu.addSubItem("judenverfolgungid", "jüdische Familien", "jüdische Familien",  "juedischefamilien.htm");

menu.showMenu(); } </script> <script language="JavaScript"> showToolbar(); </script> <script language="JavaScript"> function UpdateIt() { if (ie&&keepstatic&&!opr6) document.all["MainTable"].style.top = document.body.scrollTop; setTimeout("UpdateIt()", 200); } UpdateIt(); </script> </body> </html>

Gruß aus Ddorf

Stefan D.