Mo: Layer anderem Frame zuweisen!

Hallo liebes Forum!

Ich habe auf diesem Weg schonmal versucht eine Antwort auf mein Problem zu bekommen. Leider ist mein Eintrag nicht mehr vorhanden!?

Hier mein Problem:

Ich versuche mir ein Menüsystem zu erstellen. Jedoch werden die Layer durch den benachbarten Frame abgeschnitten. Wie kann ich dieses Problem beheben?

Hier das bisheriges Skript (stammt nicht von mir, sondern von traci.de, ich habe es nur zu meinen Gunsten umgeformt):

Es würde mich sehr freuen, wenn mir jemand sagen könnte, was falsch ist und wie man mein Problem lösen kann.

<script language="javascript"> <!--  if(document.layers) document.write('<frameset rows="86," frameborder="NO" border="0" framespacing="0" noborder marginwidth="0" marginheight="0" scrolling="NO" noresize>\n  <frame src="top.htm" name="logo" frameborder="NO" marginwidth="0" marginheight="0" scrolling="NO" border="0" noborder noresize>\n');  if(document.all) document.write('<frameset rows="83," frameborder="NO" border="0" framespacing="0" noborder marginwidth="0" marginheight="0" scrolling="NO" noresize>\n  <frame src="top.htm" name="logo" frameborder="NO" marginwidth="0" marginheight="0" scrolling="NO" border="0" noborder noresize>\n');  if(document.layers) document.write('<frameset cols="157," frameborder="NO" border="0" framespacing="0" noborder marginwidth="0" marginheight="0" scrolling="NO" noresize>\n');  if(document.all) document.write('<frameset cols="150," frameborder="NO" border="0" framespacing="0" noborder marginwidth="0" marginheight="0" scrolling="NO" noresize>\n'); //--> </script>

<SCRIPT language=JavaScript type=text/javascript> <!-- Browser=""; if(navigator.appName.indexOf("Netscape")==-1) Browser="IE" else { if (document.layers) Browser="NS4"; else Browser="NS6"; }

No3 = (parseInt(navigator.appVersion) > 3) ? 1:0; layer = (document.all && No3) ? "document.all['L'+menu].style" : (document.layers && No3) ? "document.layers['L'+menu]" : 0; if (Browser =="NS6")layer= (document.getElementById) ? "document.getElementById('L'+menu).style" :(document.layers && No3) ? "document.layers['L'+menu]" : 0;

var timer; function Show() { if(layer) { if(timer) clearTimeout(timer); for(menu=0; menu<Layer.length; menu++) { if(Layer[menu]) { eval(layer).visibility = "hidden"; } } for(i=0; i<arguments.length; i++) { menu=arguments[i]; eval(layer).visibility = "visible"; } } } function Hide() { timer = setTimeout("Show()", 500); } //--> </SCRIPT>

<BR><DIC id=menubar style="Z-INDEX: 1; VISIBILITY: hidden; POSITION: relative"> <div align="left"> <TABLE cellSpacing=0 cellPadding=3 width=113 border=0>   <TBODY>   <TR>     <TD width="105" align="center">       <p align="center"><a onmouseover="Show(1,7)" onmouseout="Hide(1,7)" </a href="http://www.bstm.de/shop"><img border="0" src="images/buttons/shop.gif" width="94" height="26" align="left"></a></p>     </TD>   </TR>   <TR>     <TD width="105" align="center"><a onmouseover="Show(2,7)" onmouseout="Hide(2,7)" <a href="leistungen.gif"><img border="0" src="images/buttons/leistungen.gif" width="132" height="26"></a></TD>   </TR>   <TR>     <TD width="105" align="center"></TD>   </TR>   <TR>     <TD width="105" align="center"><A onmouseover=Show(3,7) onmouseout=Hide(3,7)<a href="http://www.bstm.de/leistungen"><img border="0" src="images/buttons/privat.gif" width="132" height="26"></a></TD>   </TR>   <TR>     <TD width="105" align="center"><A onmouseover=Show(4,7) onmouseout=Hide(4,7)<a href="http://www.bstm.de/leistungen"><img border="0" src="images/buttons/kostenlos.gif" width="132" height="26"></a></TD>   </TR></TBODY></TABLE>

</div>

<SCRIPT language=JavaScript> <!-- hovercolor   = "#BBBBBB";        // color name/code bgcolor      = "#ffffff";        // color name/code background   = "";              // picture url menu_border  = 0;                        // IE only border_color = "#000000";        // IE only arrow_pic    = "script740849_0_2.gif"; // url of arrow picture for submenus

if(document.all) { if(!background) { background=bgcolor; }  } if(Browser=="NS6") { if(!background) { background=bgcolor; }  } if(Browser=="NS4"){ background = "url("+background+")"; }

function LayerSpecs(Left,Top,Width) { if(No3) {         if(document.all) { Top+=7; Left+=2; Width-=6; }         if(Browser=="NS6"){ Top+=7; Left+=2; Width-=6; }         this.left  = Left;         this.top   = Top;         this.info  = "";         T=0;         for(i=3; i<arguments.length; i++) {                 if(Browser=="IE") { this.info += "<TR><TD WIDTH="+Width+" onMouseOver='this.bgColor=""+hovercolor+""' onMouseOut='this.bgColor=""'>"+arguments[i]+"</TD></TR>"; }                 if(Browser =="NS6") { this.info += "<TR><TD WIDTH="+Width+" onMouseOver='this.bgColor=""+hovercolor+""' onMouseOut='this.bgColor=""'>"+arguments[i]+"</TD></TR>"; }                 if(Browser == "NS4") { this.info += "<LAYER onMouseOver='this.bgColor=""+hovercolor+""' onMouseOut='this.bgColor=""+bgcolor+""' WIDTH="+Width+" POSITION=RELATIVE TOP="+T+"> "+arguments[i]+"</LAYER>"; } T+=20; } } }

Layer = new Array(); arrow = "<IMG SRC='"+arrow_pic+"' WIDTH=6 HEIGHT=10 BORDER=0 ALT=''>";

Layer[1] =        new LayerSpecs(100,22,110,                         '<a href="http://www.bstm.de/shop" onMouseOver="Show(1)"><img border="0" src="software.gif" width="94" height="26"></A>'

);

Layer[2] =        new LayerSpecs(150,46,110,                         '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="webdesign.gif" width="94" height="26"></A>',                         '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="schreiben_scannen_archivieren.gif" width="94" height="26"></A>',        '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="corporate_design_communication.gif" width="94" height="26"></A>',        '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="programmieren.gif" width="94" height="26"></A>',        '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="studentenservice.gif" width="94" height="26"></A>',        '<a href="http://www.bstm.de/shop" onMouseOver="Show(2)"><img border="0" src="coaching.gif" width="94" height="26"></A>'

);

Layer[3] =        new LayerSpecs(100,70,110,                         '<A HREF="http://www.traci.de">Layer 3</A> '+arrow                         <!--'<A HREF="http://www.traci.de">Javascript Archiv</A> ',-->                         <!--'<A HREF="http://www.traci.de">Javascript Archiv</A> ',-->                         <!--'<A HREF="http://www.traci.de">Javascript Archiv</A> ',-->                         <!--'<A HREF="http://www.traci.de">Javascript Archiv</A> '--> );

Layer[4] =        new LayerSpecs(230,22,110,                         '<A HREF="http://www.traci.de" onMouseOver="Show(4,1)">Layer 4</A> ',                         '<A HREF="http://www.traci.de" onMouseOver="Show(4,1)">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de" onMouseOver="Show(4,1)">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de" onMouseOver="Show(5,4,1)">Javascript Archiv</A> '+arrow,                         '<A HREF="http://www.traci.de" onMouseOver="Show(4,1)">Javascript Archiv</A> ' );

Layer[5] =        new LayerSpecs(360,22,110,                         '<A HREF="http://www.traci.de">Layer 5</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ' );

Layer[6] =        new LayerSpecs(230,46,110,                         '<A HREF="http://www.traci.de">Layer 6</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ' );

Layer[7] =        new LayerSpecs(230,60,110,                         '<a href="http://www.bstm.de/shop" onMouseOver="Show(1)"><img border="0" src="test.gif" width="94" height="26"></A>'

);

Layer[8] =        new LayerSpecs(230,84,110,                         '<A HREF="http://www.traci.de">Layer 8</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ',                         '<A HREF="http://www.traci.de">Javascript Archiv</A> ' ); j = (Layer[0]) ? 0:1; for(i=j; i<Layer.length; i++) {

if(Browser=="IE") { document.write("<div onMouseOver='clearTimeout(timer)' onMouseOut='Hide("+i+")' ID='L"+i+"' STYLE='position:absolute; visibility:hidden; background:"+background+"; top:"+Layer[i].top+"; left:"+Layer[i].left+";'><TABLE STYLE='border:solid "+menu_border+" "+border_color+"'>"+Layer[i].info+"</TABLE></div>"); }         if(Browser=="NS4") { document.write("<LAYER onMouseOver='clearTimeout(timer)' onMouseOut='Hide("+i+")' ID='L"+i+"' POSITION=ABSOLUTE VISIBILITY=HIDDEN BGCOLOR='"+bgcolor+"' BACKGROUND='"+background+"' TOP="+Layer[i].top+" LEFT="+Layer[i].left+">"+Layer[i].info+"</LAYER>"); }         if(Browser=="NS6") { document.write("<div ID='L"+i+"' onMouseOver='clearTimeout(timer)' onMouseOut='Hide("+i+")' STYLE='position:absolute; visibility:hidden; background:"+background+"; top:"+Layer[i].top+"px; left:"+Layer[i].left+"px;'><TABLE STYLE='border:solid "+menu_border+" "+border_color+"'>"+Layer[i].info+"</TABLE></div>"); }

}

if(Browser=="IE"){ document.all["menubar_1"].style.visibility = "visible"; }   if(Browser=="NS4") { document.layers["menubar_1"].visibility = "visible"; }   if(Browser=="NS6") {document.getElementById('menubar_1').style.visibility = "visible"; }

// --> </SCRIPT>

<!--Ende des Scripts-->

  1. guten Abend ;-)

    Ich versuche mir ein Menüsystem zu erstellen. Jedoch werden die Layer durch den benachbarten Frame abgeschnitten. Wie kann ich dieses Problem beheben?

    erstmal: bei manchen anderen Fragestellern muß man geradezu betteln um ein Stückchen Code. Du lieferst nun beinahe schon wieder viel zuviel davon ...

    Es gibt einige Anmerkungen zu machen:
    1. es ist völlig normal und üblich, daß man sich Code irgendwo holt oder "borgt", und für die eigenen Zwecke umarbeitet. Das sollte aber möglichst mit etwas Verständnis für diesen geborgten Code geschehen. Eines der Grundprobleme bei deinem Code ist, daß zwar versucht wird, auf die beiden Browser IE und Netscape einzugehen, aber auf eine nicht mehr zeitgemäße Weise. Netscape 6 kann zum Beispiel "document.layers" nicht mehr verstehen ...
    Wenn man "Cross-Browser-Programmierung" einsetzen möchte, ist es zur Differenzierung besser, sich auf "getElementsByID" oder etwas Ähnliches zu beziehen.
    2. Dein so umfangreicher Code enthält verblüffenderweise nicht ein einziges Frame. Man kann also dein "Problem" nicht wirklich überprüfen.
    3. Zu Frames gibt es in SELKFHTML und im Forumsarchiv diverse Aussagen. Möglich wäre ja, daß du versuchst, deine Beispielseite in einen Frame zu legen, der einfach nicht groß genug ist, um den gesamten Layer anzeigen zu können. Dann gibt es keine Lösung, weil ein Layer aus einem Frame heraus eben die Framegrenzen nicht "überspringen" kann.
    4. Es gibt aber Lösungsmöglichkeiten (ohne Layer) eine Navigation in frameübergreifenden temporären Anzeigen aufzurufen. Die eindrücklichste Lösung ist die "Quickbar" in SELFHTML. Vielleicht probierst du es einfach damit.

    Es würde mich sehr freuen, wenn mir jemand sagen könnte, was falsch ist und wie man mein Problem lösen kann.

    Das Problem ist, daß an deinem Code eigentlich nichts wirklich "falsch" ist. Er ist bloß nicht mehr zeitgemäß, und wahrscheinlich ist es ganz einfach für deine Anforderungen nicht der richtige Code.

    Grüße aus Berlin

    Christoph S.