2009-05-09 6 views
0

Wie kann ich die Mausposition abrufen außerhalb davon zugewiesen wird Event-Handler-FunktionMaus Standorte außerhalb eines Event-Handlers

Zum Beispiel, wenn Event.MOUSEMOVE = somefuction, wie soll ich sagen ...

someOtherFunction(maybeSomeParams) 
{ 
    getCurrentMouseLocn(); 
} 

oder

Antwort

1

Die einfachste Möglichkeit besteht darin, das Mausbewegungsereignis zu erfassen und die Position in einer globalen Variablen zu speichern.

Wenn es bereits erfasst ist können Sie tun:

var oldFunction = document.onmousemove; 
document.onmousemove = function(e) 
{ 
    // save x & y here... 

    return oldFunction(e); 
} 
0

Mit jQuery können Sie Mausposition in irgendwelchen Veranstaltungen haben:

$('#example').click(function(e){ 
    var x = e.pageX; 
    var y = e.pageY; 
    // ... 
}); 

Mehr Infos hier: http://docs.jquery.com/Tutorials:Mouse_Position Dies kann helfen. Ansonsten verwenden Sie das mousemove-Ereignis, um die letzte Position x/y in globalen Variablen zu speichern.

+0

Haben Sie seine Frage gelesen? – vsync

+0

Ooh, du hast Recht! Ich habe die Frage nicht vollständig verstanden. In diesem Fall eine Möglichkeit, globale Variable zu verwenden. – GiDo

1

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.

Verwandte Themen