Frage

ich brauche einen Halt der absolute Mausposition / Koordinaten zu erhalten (X und Y) unter Verwendung von (vorzugsweise) jQuery wie in dieses Tutorial aber außerhalb jeder Veranstaltung JavaScript. Danke.

War es hilfreich?

Lösung

Nicht möglich. Sie können jedoch den gleichen Ansatz im Tutorial verwenden, um die Position in einer globalen Variablen zu speichern und außerhalb der Veranstaltung lesen.

Wie folgt aus:

jQuery(document).ready(function(){
   $().mousemove(function(e){
      window.mouseXPos = e.pageX;
      window.mouseYPos = e.pageY;
   }); 
})

Sie können nun window.mouseXPos und window.mouseYPos von überall verwendet werden.

Andere Tipps

Dies begann als Kommentar auf Chetan Sastry Antwort , aber ich merkte, es könnte auch als Antwort Posting wert sein:

würde ich vorsichtig sein, über eine Dokument-Ebene hat, immer lauf mousemove Ereignis, auch wenn Sie nur die Abfrage von Cursorposition ist. Das ist eine Menge Verarbeitung und kann mit jedem Browser versinken, besonders langsamer diejenigen wie IE.

Ein Problem, wie dies wirft mit ziemlicher Sicherheit der Frage der Design-Entscheidung: Wenn Sie nicht über ein Maus-Ereignis abzufragen für die Cursorposition behandeln müssen, brauchen Sie wirklich die Cursor-Position? Gibt es einen besseren Weg, um das Problem, das Sie versuchen zu lösen?

zu lösen

Edit: auch in Safari 4, die (Untertreibung) sehr schnell , dass einzelne mousemove Ereignis macht für mich jede Interaktion mit der Tutorial-Seite deutlich abgehackt. Denken Sie darüber nach, wie das wirkt sich der Nutzer Wahrnehmung Ihrer Website oder Anwendung.

Mit dieser Funktion wird die Auswirkungen auf dem UI-Leistung verringern, indem nur die Mausposition in einem Intervall bekommen:

function getMousePosition(timeoutMilliSeconds) {
    // "one" attaches the handler to the event and removes it after it has executed once 
    $(document).one("mousemove", function (event) {
        window.mouseXPos = event.pageX;
        window.mouseYPos = event.pageY;
        // set a timeout so the handler will be attached again after a little while
        setTimeout(function() { getMousePosition(timeoutMilliSeconds) }, timeoutMilliseconds);
    });
}

// start storing the mouse position every 100 milliseconds
getMousePosition(100);

So wie in der anderen Antwort „Sie können jetzt window.mouseXPos und window.mouseYPos von überall benutzen.“

Sie verlieren ein wenig Genauigkeit wie die Maus bewegen, wird in den Pausen nicht erkannt werden.

Ich habe @Chetan Sastry ‚s soulution versuchen, aber es umfaßt nicht funktioniert. (Ich bin mit jQuery 1.6.4). Ich ändern Sie den Code und dann funktioniert i jetzt. Hier ist mein Code. Ich hoffe, dass dies dazu beitragen wird.



    $(document).ready(function(){
       $(document).mousemove(function(e){
          window.mouseXPos = e.pageX;
          window.mouseYPos = e.pageY;
       }); 
    });

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top