• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eventhandler "onMouseStay"

derfragende79

Neues Mitglied
Hallo zusammen,

Ich suche eine Lösung wie man einen speziellen Eventhandler bauen kann. Dieser soll einen Event entgegennehmen wenn ich mit der Maus auf ein Objekt fahre und dort stehenbleibe. Wenn ich nur über das Objekt fahre soll er nicht ausgelöst werden.

Hat jemand eine Idee wie man das machen könnte, oder gibt es sowas vielleicht schon?

LG
 
Das könnte in einem Zusammenspiel von onmouseover und onmouseout funktioniert. In onmouseover setzt Du eine globale JavaScript-Variable auf irgendeinen Wert, z.B. 1. Bei onmouseout setzt Du ihn wieder auf 0. Gleichzeitig mit onmouseover startest Du die von dir gewünschte Funktion die zunächst prüft, ob der globale Wert der o.g. JavaScript-Variable 1 ist, evtl. auch mit einigen Millisekunden Verzögerung (window.setTimeout()).
 
Hallo und vielen Dank für die schnelle Antwort.

Ich muss ja auch noch die Bewegung der Maus testen und bei window.setTimeout() wird sie beim mir als stehend bewertet, egal ob sie nach dem Event woanders ist.

Das "onmouseover und onmouseout"-Flag habe ich auch gesetzt. Dann habe ich einen Eventhandler auf Mausbewegungen am laufen und eine Funktion die mit setInterval gestartet wird. Diese Funktion notiert die Mausposition und vergleicht sie mit dem Stand des letzten Aufrufs. Wenn der Stand gleich ist und onmouseover-Flag -> true ist, dann wird der onmouseover-Event erst ausgeführt.
Das Hauptproblem was das ganze so kompliziert macht ist, dass die Maus beim ersten Auslösen des Events in Bewegung ist. D.h. es muss das eigentliche Vorhaben der Aktion zwischengespeichert werden und dann im Stillstandfall erst ausgelöst werden, bzw beim "onmouseout bei permanenter Bewegung" wieder verworfen werden.

Ich hab jetzt eine unschöne Lösung von hinten durch die Brust ins Auge. Aber ich glaube, das kann man auch besser machen.
 
1.) Dort steckt ein Dankeschön für deine Antwort drin. Und dass das "onmouseover und onmouseout"-Flag ein sinnvoller Vorschlag war.

2.) Der Hinweis, dass es mit "window.setTimeout()" imho. nicht geht.

3.) Das ich es gelöst habe, aber mit der Lösung nicht zufrieden bin, und gerne eine bessere Lösung hätte. Also falls das jemand liest der schon mal etwas ähnliches gemacht hat wäre ich trotzdem dankbar.

:)
 
Verbesserung der Qualität eine Anwendung?!

Falls das deine Frage auch nicht beantwortet würde ich dich bitten, diese so zu formulieren, dass es nicht mehr allzuviele Möglichkeiten gibt darauf zu antworten.
 
Wieso willst Du genau den Moment haben, wenn die Maus über einem Element steht (und sich nicht bewegt)? Soll dann irgendwas ablaufen? Irgendwas passieren? Was ist der Sinn des Ganzen?
 
Ich habe eine Anwendung in der auf "onmouseover" Events ausgelöst werden, die weitere Informationen anzeigen. Da die Anzahl der Objekte nun steigt, aber der Platz gleich bleiben muss, lösen viele Benutzer beim Verwenden der Anwendung versehentlich Events aus.
Ohne Frage ist das ein schlechtes Design der Anwendung aber da es kein Budget für eine Neustrukturierung gibt löse ich das Problem in dem ich davon ausgehe, das der Benutzer keinen Event angezeigt haben will solange sich die Maus bewegt.
 
Mmh, dann frag doch die Mausposition noch zusätzlich ab. Prüfe die mit einem window.setTimeout() alle 150 Millisekunden und wenn sich die Position geändert hast, setzt Du eine Variable die die Anzeige von Objekten verhindert. Sobald sie sich mal nicht mehr ändert, leerst Du diese Variable. Und beim mouseover startest Du die Anzeige eines solchen Objektes nur, wenn die Variable es nicht verhindert.
 
So ähnlich habe ich es ja gemacht.

"window.setTimeout()" hält alles an und ist nicht geeignet, da die Mausposition bei "window.setTimeout()" für das Javascript immer steht. Und der onmouseoverevent immer ausgeführt wird wenn das Zielobjekt angefahren wird. Beim Auslösen des Events ist die Maus immer in Bewegung

Ich hab keine andere Möglichkeit gefunden als den onmouseover-Event zwischen zuspeichern und ihn dann wenn die Maus zum Stillstand kommt auszuführen oder zu verwerfen wenn es einen onmouseout-Event gab.

Aber ich wundere mich, wieso es da keinen nativen Events gibt, so weit hergeholt finde ich das gar nicht. Ich glaube, dass könnte vielen zukünftigen Anwendungen von Nutzen sein ... (auch wenn es hier nur wegen dem schlechtes Design nötwendig war)
 
Zurück
Oben