Question

I besoin d'obtenir un maintien de la position de la souris absolue / coordonnées (X et Y) en utilisant (de préférence) jQuery comme dans ce tutoriel , mais en dehors de tout événement JavaScript. Merci.

Était-ce utile?

La solution

Pas possible. Vous pouvez cependant utiliser la même approche dans le tutoriel pour mémoriser la position dans une variable globale et le lire en dehors de l'événement.

Comme ceci:

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

Vous pouvez maintenant utiliser window.mouseXPos et window.mouseYPos où que vous soyez.

Autres conseils

Cela a commencé comme un commentaire sur la réponse Chetan Sastry , mais je l'ai réalisé pourrait également être utile de la publication en tant réponse:

Je serais prudent d'avoir un document de niveau, événement mousemove toujours en cours d'exécution, même si vous êtes seulement interrogation pour la position du curseur. Ceci est beaucoup de traitement et peut enliser un navigateur, en particulier les plus lents comme IE.

Un problème comme celui-ci soulève presque certainement la question de la décision de la conception: si vous n'avez pas besoin de gérer un événement de souris pour interroger la position du curseur, avez-vous vraiment besoin de la position du curseur? Y at-il une meilleure façon de résoudre le problème que vous essayez de résoudre?

Edit: même dans Safari 4, qui est (euphémisme) très rapide , ce seul événement mousemove fait chaque interaction avec cette page tutoriel sensiblement saccadée pour moi. Pensez à comment cela aura une incidence sur la perception qu'ont les utilisateurs de votre site ou de l'application.

Cette fonction diminue l'impact sur les performances de l'interface utilisateur que par obtenir la position de la souris à un intervalle:

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);

Tout comme dans l'autre réponse « Vous pouvez maintenant utiliser window.mouseXPos et window.mouseYPos de partout. »

Vous perdez un peu de précision que le déplacement de la souris ne sera pas détectée pendant les intervalles.

Je Soulution essayer de @Chetan Sastry, mais il does't fonctionne. (J'utilise jQuery 1.6.4). Je change le code, puis je travaille maintenant. Voici mon code. J'espère que cela vous aidera.



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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top