Dirk: Ereignis, wenn Maus außerhalb eines Bereiches ist

Hallo zusammen,

mich würde interessieren, ob es eine Möglichkeit gibt, eine Funktion aufzurufen, wenn sich der Mauszeiger außerhalb eines bestimmten Bereichs befindet. Als Eventhandler könnte ich mir body mit onmousemove vorstellen, in der aufgerufenen Funktion kann ich ja die Mausposition ermitteln. Nur das mit welchem Befehl? hab noch absolut nix gefunden. Hat jemand einen Tip?

viele Grüße,
Dirk

  1. mich würde interessieren, ob es eine Möglichkeit gibt, eine Funktion aufzurufen, wenn sich der Mauszeiger außerhalb eines bestimmten Bereichs befindet. Als Eventhandler könnte ich mir body mit onmousemove vorstellen, in der aufgerufenen Funktion kann ich ja die Mausposition ermitteln. Nur das mit welchem Befehl? hab noch absolut nix gefunden. Hat jemand einen Tip?

    Wie wäre es mit onmouseout?

    Struppi.

    1. ;-)

      ja, natürlich. das würde im normalfall schon gehen. aber in meinem bereich befinden sich 7 objekte, die ein over event bekommen. wenn ich zwischenzeitlich auf ein anderes gehe und dann bspw. wieder auf das erste element gehe, soll dieses ja angezeigt werden. mit einem timout, der zwangsläufig da sein muß, da ich sonst nicht auf die neu erscheinenden elemente gehen kann, hätte ich das problem, daß der timout feuert, obwohl er nicht mehr feuern soll. ich hoffe, das ist nicht zu kompliziert ausgedrückt:

      1. ich gehe auf die erste zeile. onmouseover - das zugeörige element wird jetzt angezeigt.
      2. ich gehe auf eine zeile weiter unten, auch hier werden die zugehörogen elemente angezeigt. das erste verschwindet beim anzeigen eines anderen automatisch.
      3. ich gehe wieder auf die erste zeile. das zugehörige element wird angezeigt. hier kann es aber passieren, daß es nach dem anzeigen trotzdem wieder verschwindet, weil durch mouseout timeout noch ein event ausgelöst wird, das jetzt erst feuert, obwohl es das nicht mehr soll.

      Kurzum, die Lösung mit dem mouseout wird, wenn ich keinen denkfehler mache, nicht funktionieren.

      1. Hallo,

        1. ich gehe auf die erste zeile. onmouseover - das zugeörige element wird jetzt angezeigt.
        2. ich gehe auf eine zeile weiter unten, auch hier werden die zugehörogen elemente angezeigt. das erste verschwindet beim anzeigen eines anderen automatisch.
        3. ich gehe wieder auf die erste zeile. das zugehörige element wird angezeigt. hier kann es aber passieren, daß es nach dem anzeigen trotzdem wieder verschwindet, weil durch mouseout timeout noch ein event ausgelöst wird, das jetzt erst feuert, obwohl es das nicht mehr soll.

        Wenn ich dich richtig verstehe:
        Dann speicherst du den Timeout in einer globalen Variablen (verstecken_timeout = setTimeout("...verstecke...", 1234);) und brichst ihn mit clearTimeout ab, immer wenn der onmouseover-Event desselben »Objekts« passiert.
        Wobei du wahrscheinlich mehrere Timeouts nebeneinander berücksichtigen musst, also nicht mit einer einzigen globalen Variable arbeiten kannst, in der alle Timeouts gespeichert werden und also nur der Zugriff auf den zuletzt gesetzten Timeout möglich ist. Wahrscheinlich haben deine »Objekte« z.B. IDs oder Nummern. Die könntest du im Variablennamen verwenden, z.B. window["verstecken_timeout_" + nummer] = setTimeout(...) und entsprechend clearTimeout(window["verstecken_timeout_" + nummer]), wenn nummer die ID bzw. Nummer enthält. Ein Array bzw. Object zum geordneten Speichern der Timeout-Referenzen wäre ebenfalls möglich. Oder der Timeout wird an den Elementknoten geklebt.

        Mathias

        1. die lösung von molily funktioniert wunderbar, kann die variante nur empfehlen.
          ich habs ähnlich auf www.rstonyx.com in dem DHTML-Menü implementiert.

          schöne grüße

          alex

  2. Hallo zusammen,

    mich würde interessieren, ob es eine Möglichkeit gibt, eine Funktion aufzurufen, wenn sich der Mauszeiger außerhalb eines bestimmten Bereichs befindet. Als Eventhandler könnte ich mir body mit onmousemove vorstellen, in der aufgerufenen Funktion kann ich ja die Mausposition ermitteln. Nur das mit welchem Befehl? hab noch absolut nix gefunden. Hat jemand einen Tip?

    Hm. Sollte kein Problem sein und funktioniert auch so. Schema:

    <!-- snip -->
    <body onmousemove="Funktion1">
     <div onmouseover="Funktion2">irgendwas</div>
     <div onmouseover="Funktion3">irgendwas</div>
     <div onmouseover="Funktion4">irgendwas</div>
     <div onmouseover="Funktion5">irgendwas</div>
     <div onmouseover="Funktion6">irgendwas</div>
     <div onmouseover="Funktion7">irgendwas</div>
     <div onmouseover="Funktion8">irgendwas</div>
    </body>
    <!-- snip -->

    Weil die Layer über dem body-Element liegen, feuert dessen Eventhandler auch nicht beim Drüberfahren, erst nach Verlassen wieder.

    Wofür Du allerdings da irgendwo einen Timeout brauchst (späterer Text von Dir), ist mir allerdings nicht ganz klar.

    servus,
    HTV

    viele Grüße,
    Dirk