BenCC: Opera ladet das Menu nicht gleich richtig

Hallo Leute,

auf meiner Website www-benedikt-cholewa.de.vu habe ich ein Menu, das mit JavaScript realisiert ist. Im IE und NN wird das Menu ordnungsgemäß geladen und dargestellt. Wenn ich meine Site im Opera-Browser betrachten will, dann wird zwar die Menuleiste angezeigt, aber man kann nicht die Menueinträge auswählen. Erst ein Klick auf Start/Home lässt das Menü ordungsgemäß funktionieren. Diesen Umstand würde ich gern beheben.

Meine Frage: Weiss jemand von Euch, was ich dagegen machen könnte? Ich schicke Euch den Code der Datei, in der das Menu eingebaut ist.

<html> <title><Public Website of Benedikt Cholewa></title> <script type="text/javascript"> timer=false  // Variable für timeout

bildhoehe_hmnu = 24 //Alle bilder des Hauptmenues gleich hoch

//abstand zwischen den Grafiken(horizontal und vertikal) abstand= startwertx=15  // x Position an der das Hauptmenue beginnt

naviframe="nav" // Hier den Namen des Navigationsframes vergeben mainframe="main"  //Hier den Namen des Hauptframes vergeben

//Ab hier die Menues füllen. // es wird für jeden menuepunkt je eine Grafik für den //Normalzustand und für den Hooverzustand benötigt //die beiden grafiken haben den gleichen Namen + "_norm" für //die normale Grafik und "_akt" für die Hoovergrafik //Beispiel: home_norm.gif und home_akt.gif

//die beiden ersten Eintraege jeweils für das Hauptmenue

//1.Name der Normalen grafik(ohne "_norm" und ".gif" //2.Für Menuepunkte ohne Untermenue eine Seite auf die gelinkt wird //bzw. für Menuepunkte mit untermenue "javascript:void()" //ab dem Dritten Eintrag dann folgen die Untermenuepunkte in gleichem Schema //1. name der grafik, Name der Seite auf die gelinkt wird.

menues=new Array() menues[0]=new Array("bilder/mStart","javascript:void(0)" ,"bilder/sHome" ,"start.htm", "bilder/sProfil" ,"profil.htm")

menues[1]=new Array("bilder/mFavoriten","javascript:void(0)" ,"bilder/fBayern3" ,"http://www.bayern3.de|fremd", "bilder/fFormblitz" ,"http://www.formblitz.de|fremd","bilder/fMap24" ,"http://www.map24.de|fremd","bilder/fMeinestadt" )

menues[2]=new Array("bilder/mWissen","javascript:void(0)","bilder/wAccess","http://www.fullaccess.de|fremd","bilder/wExcel","http://www.excel-center.de/index.php|fremd","bilder/wOutlook","http://www.holert.com/outlook/tutorial|fremd","bilder/wPowerPoint","http://www.uni-tuebingen.de/zdv/kursanleitungen/power-point-2000/|fremd","bilder/wWord","http://www.office-online-schule.de/Word/word.html|fremd","bilder/wWindows","http://www.microsoft.com/germany/windows/|fremd","bilder/wKnoppix","http://www.knoppix.org/|fremd","bilder/wSuSE","http://www.suse.de|fremd","bilder/wSQL","http://123.koehntopp.de/kris/artikel/mysql-einfuehrung/|fremd","bilder/wASP","http://www.netzwelt.com/selfhtml/intro/technologien/asp.htm|fremd")

menues[3]=new Array("bilder/mExtras","javascript:void(0)","bilder/eChat","http://benedikt-cholewa.freeweb4you.de/chat.htm|fremd","bilder/eEmail","email.htm","bilder/eGaestebuch","guestbook.php", "bilder/eImpressum","impressum.htm")

//Ab hier werden die grafiken vorgeladen

tempbild=new Array() for(i=0;i<menues.length;i++) { for(xi=0;xi<menues[i].length-1;xi=xi+2) { x=tempbild.length tempbild[x]=new Array(new Image(),new Image()) tempbild[x][0].src=menues[i][xi]+"_norm.gif" tempbild[x][1].src=menues[i][xi]+"_akt.gif" } }

//Function zum erstellen des Hauptmenues:

function hmnu_erstellen() {

for(i=0;i<menues.length;i++) { ziel=mainframe teiler=menues[i][1].split("|") if(teiler.length>1) ziel="_blank"

if(document.layers) self.frames[naviframe].document.write( '<layer name="hmnu'+i+'" visibility="show">') else self.frames[naviframe].document.write( '<div id="hmnu'+i+'" style="position:absolute;left:0;visibility:visible;">')

self.frames[naviframe].document.write('<a href="'+teiler[0]+'" target="'+ziel+'" onmouseover="parent.bw_hmnu('+i+',1)" onmouseout="parent.bw_hmnu('+i+',0)">') self.frames[naviframe].document.write('<img src="'+menues[i][0]+'_norm.gif"  border="0" name="hmnubild'+i+'"></a>') if(document.layers) self.frames[naviframe].document.write('</layer>') else self.frames[naviframe].document.write('</div>') } } //Function für den Bildwechsel im Hauptmenue und das Anzeigen der Untermenues

function bw_hmnu(nr,zustand) { if(zustand==1) endung="_akt" else endung="_norm"

if(document.layers) self.frames[naviframe].document.layers['hmnu'+nr].document.images['hmnubild'+nr].src = menues[nr][0]+endung+".gif" else self.frames[naviframe].document.images['hmnubild'+nr].src=menues[nr][0]+endung+".gif" if(zustand==1) { clearTimeout(timer) umnu_weg() umnu_zeigen(nr) } else timer=setTimeout("umnu_weg()",2000) //Timeout bestimmt die Zeit ab der das Untermenue wieder versteckt wird }

// Function zum verstecken der Untermenues function umnu_weg() { for(i=0;i<menues.length;i++) { if(document.all) { if(self.frames[mainframe].document.all["umnu"+i]) self.frames[mainframe].document.all["umnu"+i].style.visibility="hidden" }

if(document.layers) { if(self.frames[mainframe].document.layers["umnu"+i]) self.frames[mainframe].document.layers["umnu"+i].visibility="hide" }

if(document.getElementById) { if(self.frames[mainframe].document.getElementById("umnu"+i)) self.frames[mainframe].document.getElementById("umnu"+i).style.visibility="hidden" }

} }

//function zum Anzeigen des entsprechenden Untermenues function umnu_zeigen(nr) { if(document.all) { if(self.frames[mainframe].document.all["umnu"+nr]) { self.frames[mainframe].document.all["umnu"+nr].style.left = parseInt(self.frames[naviframe].document.all["hmnu"+nr].offsetLeft)+parseInt( self.frames[mainframe].document.body.scrollLeft) self.frames[mainframe].document.all["umnu"+nr].style.top = parseInt( self.frames[mainframe].document.body.scrollTop) self.frames[mainframe].document.all["umnu"+nr].style.visibility="visible" } } if(document.layers) { if(self.frames[mainframe].document.layers["umnu"+nr]) {

self.frames[mainframe].document.layers["umnu"+nr].left = parseInt(self.frames[naviframe].document.layers["hmnu"+nr].left) +parseInt(self.frames[mainframe].pageXOffset) self.frames[mainframe].document.layers["umnu"+nr].top = parseInt(self.frames[mainframe].pageYOffset) self.frames[mainframe].document.layers["umnu"+nr].visibility="show" } } if(document.getElementById&&!document.all) { if(self.frames[mainframe].document.getElementById("umnu"+nr)) { self.frames[mainframe].document.getElementById("umnu"+nr).style.left = parseInt(self.frames[naviframe].document.getElementById("hmnu"+nr).offsetLeft) +parseInt( self.frames[mainframe].pageXOffset) self.frames[mainframe].document.getElementById("umnu"+nr).style.top = parseInt( self.frames[mainframe].pageYOffset) self.frames[mainframe].document.getElementById("umnu"+nr).style.visibility="visible" } } }

//untermenues erstellen function umnu_erstellen() { for(i=0;i<menues.length;i++) {

if(document.layers) self.frames[mainframe].document.write( '<layer name="umnu'+i+'" left="0" visibility="hide">') else self.frames[mainframe].document.write( '<div id="umnu'+i+'" style="position:absolute;left:0;visibility:hidden;">') self.frames[mainframe].document.write('<table border="0" cellspacing="1" cellpadding="0">') for(xi=2;xi<menues[i].length-1;xi=xi+2) { ziel=mainframe teiler=menues[i][xi+1].split("|") if(teiler.length>1) ziel="_blank"

self.frames[mainframe].document.write('<tr> <td><a href="'+teiler[0]+'" target="'+ziel+'" onmouseover="parent.bw_umnu('+i+','+xi+',1)" onmouseout="parent.bw_umnu('+i+','+xi+',0)">') self.frames[mainframe].document.write('<img src="'+menues[i][xi]+'norm.gif" border="0" name="umnubild'+i+''+xi+'"></a></td></tr>') } if(document.layers) self.frames[mainframe].document.write( '</table></layer>') else self.frames[mainframe].document.write( '</table></div>') } } //Function zum Bildwechsel der Untermenues function bw_umnu(xnr,nr,zustand) { if(zustand==1) { clearTimeout(timer) endung="akt" } else { timer=setTimeout("umnu_weg()",2000) endung="norm" } if(document.layers) self.frames[ mainframe ].document.layers['umnu'+xnr].document.images['umnubild'+xnr+''+nr].src = menues[xnr][nr]+endung+".gif" else self.frames[ mainframe ].document.images['umnubild'+xnr+''+nr].src=menues[xnr][nr]+endung+".gif" }

//function zum Positionieren des Hauptmenues an den unteren Rand der Naviseite function pos_hmnu(nr) { if(document.all) { // hier positionieren des Hauptmenues // hier : am unteren rand startypos = parseInt(self.frames[naviframe].document.body.clientHeight)-bildhoehe_hmnu

//bzw. am oberen rand oder willkürlich // dazu einfach einen wert angeben //startypos =0 //bzw. einen anderen wert

self.frames[naviframe].document.all['hmnu'+nr].style.top=startypos if(nr==0) self.frames[naviframe].document.all['hmnu'+nr].style.left=startwertx else self.frames[naviframe].document.all['hmnu'+nr].style.left=parseInt(self.frames[naviframe].document.all['hmnu'+(nr-1)].offsetWidth)+parseInt(self.frames[naviframe].document.all['hmnu'+(nr-1)].offsetLeft) }

if(document.layers) { // hier positionieren des Hauptmenues // hier : am unteren rand startypos = parseInt(self.frames[naviframe].innerHeight)-bildhoehe_hmnu //bzw. am oberen rand oder willkürlich // dazu einfach einen wert angeben //startypos =0 //bzw. einen anderen wert self.frames[naviframe].document.layers['hmnu'+nr].top=startypos

if(nr==0) self.frames[naviframe].document.layers['hmnu'+nr].left=startwertx else self.frames[naviframe].document.layers['hmnu'+nr].left=parseInt(self.frames[naviframe].document.layers['hmnu'+(nr-1)].document.width)+ parseInt(self.frames[naviframe].document.layers['hmnu'+(nr-1)].left) }

if(document.getElementById&&!document.all) { // hier positionieren des Hauptmenues // hier : am unteren rand startypos = parseInt(self.frames[naviframe].innerHeight)-bildhoehe_hmnu //bzw. am oberen rand oder willkürlich // dazu einfach einen wert angeben //startypos =0 //bzw. einen anderen wert self.frames[naviframe].document.getElementById('hmnu'+nr).style.top=startypos

if(nr==0) self.frames[naviframe].document.getElementById('hmnu'+nr).style.left=startwertx else self.frames[naviframe].document.getElementById('hmnu'+nr).style.left=parseInt(self.frames[naviframe].document.getElementById('hmnu'+(nr-1)).offsetWidth)+parseInt(self.frames[naviframe].document.getElementById('hmnu'+(nr-1)).offsetLeft)

} } function ini() { for(i=0;i<menues.length;i++) { pos_hmnu(i) } }

</script>

<frameset framespacing="0" border="0" frameborder="0" cols="2%,*,2%">

<frame name="SeiteLinks" target="Hauptframe" scrolling="no" noresize src="seiten.htm">

<frameset rows="4%,5%,87%,4%">

<frame name="SeiteOben" scrolling="no" noresize src="seiten.htm" target="_self">

<frame name="nav" id="nav" scrolling="no" noresize src="oben.htm">

<frame name="main" id="main" scrolling="auto" noresize src="start.htm">

<frame name="SeiteUnten" scrolling="no" noresize src="unten.htm" target="_self">

</frameset>

<frame name="SeiteRechts" target="Hauptframe" scrolling="no" noresize src="seiten.htm">

<noframes>

<body>

<p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht

unterstützt.</p>

</body>

</noframes>

</frameset> </html>

PS: Die Grafiken habe eine Größe von 120 x 15 Pixel.

Für Eure tipps bedanke ich mich im Voraus.

mfg BenCC

  1. Hallo,

    Hast Du mal probiert die Seite zu laden, wenn Du JavaScript deaktiviert hast?

    Du solltest immer eine JavaScript-freie Variante anbieten. JavaScript dient nicht dazu, statischen Inhalt aufzubauen, dass macht man mit html. JavaScript kannst Du zur Verschönerung benutzen, aber funktionieren sollte eine Seite auch immer ohne JavaScript! Viele Nutzer haben kein JavaScript.

    Heiner

    1. Viele Nutzer haben kein JavaScript.

      Wie ich zum Beispiel

      Die Seite muss ja echt superkrass aussehen, wenn da so viel JavaScript drin ist. Kannst du die mal hochladen, damit wir die mal sehen?

      Jeena Paradies

    2. Hi,

      Du solltest immer eine JavaScript-freie Variante anbieten. JavaScript dient nicht dazu, statischen Inhalt aufzubauen, dass macht man mit html. JavaScript kannst Du zur Verschönerung benutzen, aber funktionieren sollte eine Seite auch immer ohne JavaScript! Viele Nutzer haben kein JavaScript.

      Das halte ich für Unsinn. Laut meinen Statistiken, die 100% sicher speichern, ob ein user JS aktiviert hat oder nicht, sind es weniger als 2% die JavaScript deaktiviert haben --> über 98% haben JS aktiviert.

      Ich finde, man sollte sich nicht den aufwand machen und eine noscript-Alternative machen. Diesen Aufwand sollte man lieber in Netscape 4-Kompabilität stecken.

      Noscript-Alternativen werden hier immer so hochgelobt. Wieso?? Für <2%??? Wenn ja, dann auch für die 2% Netscape 4-User! Gleichbereichtigung für alle oder keinen.

      Gruß
      Scooter

      1. Hi nochmal.

        Wobei das bei Navigation vielleicht was anderes ist, da diese ja nun wirklich wichtig ist.

        Gruß
        Scooter

      2. Hallo,

        Ich finde, man sollte sich nicht den aufwand machen und eine noscript-Alternative machen. Diesen Aufwand sollte man lieber in Netscape 4-Kompabilität stecken.

        Sehe ich genau andersrum. JavaScript zumindest aber NN4 werden sterben, html lebt weiter! JavaScript ist außerdem nicht JavaScript. Da gibt es himmelweite Browserumsetzungsunterschiede. Gerade solche layer-Sachen funktionieren meistens längst nicht überall.

        Wer hat denn in einem Jahr noch NN4? Ich mache mir die Mühe schon lange nicht mehr, dass es dort alles toll aussieht. NN4-Nutzer können zwar noch mit funktionaler Unterstützung rechnen, auf Layoutfeinheiten nehme ich dort aber keine Rücksicht mehr.

        Noscript-Alternativen werden hier immer so hochgelobt.

        Wenn man sauber arbeitet und Inhalt (html) von Layout (CSS) und tolle Effekten (JavaScript) trennt, dann macht das Sinn. Stell Dir mal vor, jemand will sich in einem Jahr eine Seite auf einem neuen PDA ansehen. Dann sehen JavaScript-Menüs aber alt aus! Im Netz muss man immer auch an Zukunftkompatibilität denken.

        Heiner

  2. Tag

    auf meiner Website www-benedikt-cholewa.de.vu

    Du meinst bestimmt http://www.benedikt-cholewa.de.vu/

    habe ich ein Menu, das mit JavaScript realisiert ist. Im IE und NN wird das Menu ordnungsgemäß geladen und dargestellt. Wenn ich meine Site im Opera-Browser betrachten will, dann wird zwar die Menuleiste angezeigt, aber man kann nicht die Menueinträge auswählen. Erst ein Klick auf Start/Home lässt das Menü ordungsgemäß funktionieren.

    Das kann ich nicht nachvollziehen.
    In meinem Opera funktioniert das Menü tadellos. Welche Version benutzt Du denn?

    Ich schicke Euch den Code der Datei, in der das Menu eingebaut ist.

    Unterlasse es bitte kilobyteweise Quelltext zu posten, sondern beschränke Dich auf den relevanten Teil

    <noframes>
      <body>
      <p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht
      unterstützt.</p>
      </body>
      </noframes>

    Du weißt aber schon, daß diese Information für Browser, die tatsächlich keine Frames anzeigen, völlig nutzlos ist.
    Im übrigen kann ich nicht verstehen, warum Du überhaupt Frames benutzt. Jedenfalls kann ich auf Deiner Seite nichts entdecken, was den Einsatz von Frames rechtfertigen würde.

    Thomas J.

    PS:

    Zu seinen Unterrichtsschwerpunkten gehören insbesondere die Themen Microsoft Office (Access, Excel, Frontpage, Outlook, PowerPoint, Word), Microsoft Windows 98/2000, Grundlagen in den  Programmiersprachen HTML, Java und C++ sowie das Internet.

    Finden Sie den Fehler in diesem Satz. Der glückliche Gewinner erhält eine Autogrammkarte von mir. Der Rechsweg ist ausgeschlossen.

    1. Hi,

      Zu seinen Unterrichtsschwerpunkten gehören insbesondere die Themen Microsoft Office (Access, Excel, Frontpage, Outlook, PowerPoint, Word), Microsoft Windows 98/2000, Grundlagen in den  Programmiersprachen HTML, Java und C++ sowie das Internet.
      Finden Sie den Fehler in diesem Satz. Der glückliche Gewinner erhält eine Autogrammkarte von mir. Der Rechsweg ist ausgeschlossen.

      Erster!!(?) HTML ist keine Programmiersprache! Das autogramm bitte einscannen, als JPG speichern und hier posten. Ich lads mir dann runter, druck es aus, und hängs mir in mein Zimmer.

      gruß
      Christian

      1. Tag

        Erster!!(?) HTML ist keine Programmiersprache! Das autogramm bitte einscannen, als JPG speichern und hier posten. Ich lads mir dann runter, druck es aus, und hängs mir in mein Zimmer.

        *Grrr* Du Schwerenöter.
        Na gut, versprochen ist verssprochen. Ein Thomas - ein Wort.

        Bitte schön, da ist es:

        <img src="http://www.zeitschrift-impressionen.de/test/autogramm.png" border="0" alt="">

    2. 'Programmiersprachen HTML'

      Zu seinen Unterrichtsschwerpunkten gehören insbesondere die Themen Microsoft Office (Access, Excel, Frontpage, Outlook, PowerPoint, Word), Microsoft Windows 98/2000, Grundlagen in den  Programmiersprachen HTML, Java und C++ sowie das Internet.
      Finden Sie den Fehler in diesem Satz. Der glückliche Gewinner erhält eine Autogrammkarte von mir. Der Rechsweg ist ausgeschlossen.

    3. Hallo Thoams,

      ich benutze Opera 6.05

      mfg
      BenC