DHTML Menü, Probleme mit Mozilla bei onmouseout
Daniel_Petratsch
- javascript
Hallo!
Ich bin schon ziemlich lange auf der Suche nach einer Lösung für dieses Problem, aber werde einfach nicht fündig!
Mein Anliegen ist folgendes:
Ich habe ein Dhtml Menü mit Javascript & Css realisiert welches sich automatisch aufklappt sobal man über den Menüpunkt fährt, und auch wieder dementsprechend zuklappt, wenn das Menü verlassen wird.
Mein Ansatz ist folgender:
Der aufzuklappende Menüpunkt ist ein <div> Element welches ein weiteres <div> als Container, der wiederum weitere <div> als die einzelnen Menüpunkte beinhaltet:
|--------------------|
|Hauptmenü (div1) |
| |
| |----------------| |
| | Container(div2)| |
| | | |
| | |------------| | |
| | |Link(div3) | | |
| | |------------| | |
| | | |
| |----------------| |
|--------------------|
Der Container(div2) is standardmässig unsichtbar und wird mit einem onmouseover von (div1) mittels JS sichtbar gemacht was soweit auch gut funktioniert.
Was nun aber nicht mehr so recht will ist das onmouseout von (div1), nach dessen Aufruf der Container (div2) wieder unsichtbar werden solte. Das komische ist aber dass es nur "manchmal" nicht funktioniert, zb wenn man zu schnell von oben nach unten über das Menü fährt, oder wenn man die Maus in einem bestimmten Winkel übers Menü bewegt - das Menü bleibt dann offen stehen und lässt sich erst nach erneutem darüberfahren mit der Maus unsichtbar machen.
Dieses Problem tritt aber _nur_ im Mozilla Firefox (und somit wahrscheinlich auch im normalen Mozilla) auf, IE und Opera machen das prima.
Ein zusätzlicher unangenehmer Nebeneffekt ist, das wiederum auch nur im Mozilla das Menü leicht flimmert sobald man die Maus darüberbewegt.
Irgendwo hab ich im Forum mal etwas über "event-bubbling" gelesen, da jemand einmal ein ähnliches Problem gehabt hat, ich hab aber die Lösung nicht genau verstanden.
Einsehen lässt sich das Menü unter:
Die zugehörige Javascriptdatei befindet sich unter:
http://www.bluelion.at/new/fileadmin/templates/main/res/dhtml_menue.js
Wäre nett wenn jemand einen Hinweis hätte!
Danke,
Daniel Petratsch
hi,
Der aufzuklappende Menüpunkt ist ein <div> Element welches ein weiteres <div> als Container, der wiederum weitere <div> als die einzelnen Menüpunkte beinhaltet:
na na, hier wären doch listen sicher die semantisch sinnvollere alternative ;-)
Was nun aber nicht mehr so recht will ist das onmouseout von (div1), nach dessen Aufruf der Container (div2) wieder unsichtbar werden solte.
helfen dir
http://forum.de.selfhtml.org/archiv/2004/10/t92181/ und/oder
http://forum.de.selfhtml.org/archiv/2004/11/t93773/
weiter?
gruß,
wahsaga
Hallo wahsaga!
Der aufzuklappende Menüpunkt ist ein <div> Element welches ein weiteres <div> als Container, der wiederum weitere <div> als die einzelnen Menüpunkte beinhaltet:
na na, hier wären doch listen sicher die semantisch sinnvollere alternative ;-)
Stimmt, habe ich nicht daran gedacht :)
Ich habe das mit einer Liste ohne andere, zusätzliche div's probiert, aber leider bleibt das Problem bestehen. Das Flimmern ist zwar weg, aber sobald ich das Menü jetzt von oben nach rechts oder links schräg nach unten verlasse tritt wieder die gleiche Fehlfunktion auf. Vorher wars von oben nach unten :(
Was nun aber nicht mehr so recht will ist das onmouseout von (div1), nach dessen Aufruf der Container (div2) wieder unsichtbar werden solte.
helfen dir
http://forum.de.selfhtml.org/archiv/2004/10/t92181/ und/oder
http://forum.de.selfhtml.org/archiv/2004/11/t93773/
weiter?
Danke für die Links, die habe ich sorgfältig durchsucht, aber leider ist deren Problem etwas anders. Ich habe auch schon alle erdenklichen Lösungen ausprobiert, sogar ohne einem eingeschachtelten div funktioniert das onmouseout-Event nur sporadisch.
Ich bin schon ziemlich verzweifelt, echt.
Die letzte Lösung, die mir jetz so spontan einfällt, ist ein Timeout von 1-2 Sekunden zu setzen, das automatisch das Menü verschwinden lässt, insofern sich der Mauszeigen (onmouseover) nicht mehr über dem Menü befindet, vielleicht checkt der Mozilla ja wenigstens das - und wenn nicht dann wirds wohl ein Bug sein.
...vielleicht ist aber irgendwo noch ein Fünkchen an Hoffnung versteckt? *zuversichtlichbin*
leicht genervte Grüße,
Daniel Petratsch
Hi,
Ich habe das mit einer Liste ohne andere, zusätzliche div's probiert, aber leider bleibt das Problem bestehen. Das Flimmern ist zwar weg, aber sobald ich das Menü jetzt von oben nach rechts oder links schräg nach unten verlasse tritt wieder die gleiche Fehlfunktion auf.
Wenn es doch im IE funktioniert, warum definierst Du die Ein-/Ausblendungen nicht über CSS und stellst das Javascript nur noch dem IE zur Verfügung?
freundliche Grüße
Ingo
Hallo Ingo!
Ich habe das mit einer Liste ohne andere, zusätzliche div's probiert, aber leider bleibt das Problem bestehen. Das Flimmern ist zwar weg, aber sobald ich das Menü jetzt von oben nach rechts oder links schräg nach unten verlasse tritt wieder die gleiche Fehlfunktion auf.
Wenn es doch im IE funktioniert, warum definierst Du die Ein-/Ausblendungen nicht über CSS und stellst das Javascript nur noch dem IE zur Verfügung?
Geniale Idee, ich frage mich wieso ich da nicht draufgekommen bin. Funktioniert jetzt endlich in allen Browsern perfekt :)
freundliche Grüße,
Daniel Petratsch