8
votes

Comment puis-je obtenir la position absolue d'un clic de souris d'un événement OnClick sur le corps?

J'essaie d'obtenir la position absolue (haut et gauche) d'un clic de souris par rapport au navigateur / corps, pas aucun élément parent dans le corps.

J'ai un auditeur lié au corps, mais e.pagex et e.pagey me donnent la position relative à une DIV.

Notez que je peux tirer parti des fonctions de jQuery et yui.

code Cela ne fonctionne actuellement pas correctement: xxx


2 commentaires

Selon ceci ( Docs.JQuery.com/Tutorials:Mouse_Position ), celles-ci devraient vous donner absolu positions. offsetx / y vous donne la position relative.


@Mrchief - Vous êtes correct, en utilisant cet exemple, j'ai réalisé que je devais lier l'événement au document et non au nœud corporel.


5 Réponses :


9
votes

Le commentateur est correct. PageX et la page vous donnent la position de la souris par rapport à l'ensemble du document et non à son parent div. Mais si vous êtes intéressé, vous pouvez obtenir la position relative au document de la position par rapport à une DIV. Strong>

Obtenez la position du parent div des parts par rapport au corps, puis ajoutez les deux valeurs. P>

x = parentdiv.style.left + e.pageX;
y = parentdiv.style.top + e.pageY;



(0,0)
_____________________
|
|
|            __________
|----100----|          |
|           |---60---* |
|           |__________|
|
|
        * = Mouse Pointer


1 commentaires

+1 pour le diagramme amusant! Vous devriez soumettre cela à JQuery Docs



0
votes

La solution, allongée à la liaison de @ mrchief de http://docs.jquerery.com/TUTTORIALS: Mouse_Position , était de se lier au document et non à l'élément de corps.

//binding the function
var methods = {
    init: function () {
        $(document).click(_handleClick);
    }
};


0 commentaires

5
votes

Selon ceci ( http://docs.jquerery.com/Tutorials:mouse_position ) , ceux-ci devraient vous donner des positions absolues. offsetx / y vous donne la position relative.

Modifier novembre 2013 : le lien "Position de la souris" d'origine semble être brisé, mais La documentation de pageX contient un exemple qui utilise jQuery pageX / y . page de la méthode Décalage contient également des exemples pertinents.


2 commentaires

@MILADNASERI: Les documents originaux sont partis (quelqu'un m'a oublié de mettre en œuvre une page 302 ), mais regardez la modification novembre . Ces pages vous donneront les mêmes informations.


Merci, vérifiez-le.



4
votes

Si j'ai bien compris votre question, ce serait la solution xxx


1 commentaires

Cela m'a aidé, vous n'ajoutez pas le décalage que vous soustrayez, merci!



3
votes

Je suppose que vous pouvez utiliser window.pagexoffset , window.pageyoffset propriété xxx


0 commentaires