Leider gibt es keine Möglichkeit, die Position des Mauszeigers außerhalb eines Ereignishandlers abzurufen. Eine Möglichkeit besteht darin, einen Ereignishandler für das Ereignis onmousemove zu registrieren und die Koordinaten in einer globalen (ish) Variablen zu speichern.
Mit einfachen alten Javascript sollte der folgende Code den Trick für Safari und FF3 tun.
var coords = {x: NaN, y: NaN};
...
if (coords.x === ... && coords.y === ...) {
/* insert your magic here */
}
...
window.addEventListener('mousemove', function(e) {
coords.x = e.clientX;
coords.y = e.clientY;
}, true);
Kurz gesagt, ein Event-Listener (Handler) ist für das Ereignis "onmousemove" registriert. Wenn das Ereignis ausgelöst wird, wird die anonyme Funktion mit dem Ereignis aufgerufen. Das Ereignis enthält mehrere Eigenschaften, von denen zwei clientX und clientY sind. Dies sind die Koordinaten der Maus relativ zum Fenster, nicht die Oberseite des Dokuments. Diese Koordinaten werden in einer Variablen platziert, auf die sowohl der Handler als auch der Code zugreifen können, der die Koordinaten benötigt. Dies könnte eine globale oder eine geschlossene Variable irgendeiner Art sein.
Ich sollte beachten, dass in der Regel Javascript-Implementierungen in den Browsern single-threaded sind. Einfach ausgedrückt bedeutet dies, dass die in der Variablen coords
enthaltenen Werte möglicherweise nicht immer aktuell sind, wenn die Maus seit dem letzten Aufruf des Ereignisbehandlers bewegt wurde.
Haben Sie seine Frage gelesen? – vsync
Ooh, du hast Recht! Ich habe die Frage nicht vollständig verstanden. In diesem Fall eine Möglichkeit, globale Variable zu verwenden. – GiDo