Mario: onmouseout - div / tabelle

Guten Abend allerseits,

ich habe folgendes Problem:

Ich habe einen DIV-Container, welcher eine Tabelle beinhaltet.
Gebe ich dem Div nun einen onmouseout-Eventhandler, so wird
dieser nicht nur dann aufgerufen, wenn das Div-Element mit der
Maus verlassen wird, sondern auch dann, wenn der Mauszeiger
sich in der Tabelle bewegt. Ich vermute, dass es genau dann
geschieht, wenn der Mauszeiger von einer Zeile der Tabelle zur
anderen uebergeht.

Kennt einer von euch diese Verhalten? Wenn ja, wie kann ich
das umgehen?

Besten Dank fuer eure Tipps.

Mario

  1. Hallo,

    mir ist gerade weiterhin aufgefallen, dass es anscheinend genau
    dann geschieht, wenn der Mauszeiger ueber ein _Element_ in der
    Tabelle des DIVs faehrt.

    Mario

  2. hi,

    Ich habe einen DIV-Container, welcher eine Tabelle beinhaltet.
    Gebe ich dem Div nun einen onmouseout-Eventhandler, so wird
    dieser nicht nur dann aufgerufen, wenn das Div-Element mit der
    Maus verlassen wird, sondern auch dann, wenn der Mauszeiger
    sich in der Tabelle bewegt.

    Ja, dann tritt onmouseover auf der Tabelle, und damit gleichzeitig onmouseout auf dem Div ein.

    Wenn ja, wie kann ich das umgehen?

    Umgehen - gar nicht.
    Aber darauf reagieren - in dem du dir anschaust, ob das Element, zu dem sich die Maus hinbewegt, inner- oder ausserhalb des Divs liegt.

    Welches Element das ist, verrät dir event.relatedTarget bzw. event.toElement im IE.
    Ob ein Element im anderen enthalten ist, erfährst du im IE über die contains-Methode. Für andere Browser, die diese nicht kennen, besorg dir einen Workaround. Lässt sich über prototype sehr schön an alle HTMLElement-Objekte binden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Guten Abend allerseits,

    ich habe folgendes Problem:

    Ich habe einen DIV-Container, welcher eine Tabelle beinhaltet.
    Gebe ich dem Div nun einen onmouseout-Eventhandler, so wird
    dieser nicht nur dann aufgerufen, wenn das Div-Element mit der
    Maus verlassen wird, sondern auch dann, wenn der Mauszeiger
    sich in der Tabelle bewegt. Ich vermute, dass es genau dann
    geschieht, wenn der Mauszeiger von einer Zeile der Tabelle zur
    anderen uebergeht.

    Kennt einer von euch diese Verhalten? Wenn ja, wie kann ich
    das umgehen?

    Besten Dank fuer eure Tipps.

    Mario

    Ja ich kenne das Verhalten auch.

    Ideen:
    1. Das mouseout event für den Table canceln. (cancelBubble und stopPropagation), so dass es nicht bis zum DIV runterdringt.

    2. mit setTimeout arbeiten. es triggert natürlich nicht nur das onmouseout event, sondern auch das onmouseover.

    beim onmouseout stößt du einen timer an, wo schon 0 ms reichen, glaub ich. beim onmouseover clearst du den (clearTimeout). Bewegst du dich also innerhalb des DIV in childElementn (table, td, ...) wird ständig ein onmouseout aufgerufen, kurz danach ein onmouseover. Erst wenn du das DIV "wirklich" verlässt. Gibt es kein onmouseover mehr, und die Funktion die du du durch onmouseout angestoßen wird ausgeführt.

    Und das geht so schnell, das merkt man nicht... wie gesagt, 0ms in window.setTimeout angeben, sollte schon reichen...

    So hab ich es mal gelöst mit erfolg...

    Gruß

  4. Hi,

    OK, danke euch beiden.

    Mit den Timeouts bzw. den Intervallen hatte ich bereits
    auch schon angefangen. Nur dachte ich mir, dass das so
    wohl nicht der beste Weg sein kann.. nun, gut.
    Werde mir das morgen noch mal naeher zu Gemuete fuehren.

    Bis dann
    Mario