IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Position du curseur de façon non evenementielle


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut Position du curseur de façon non evenementielle
    Bonjour,

    Je voudrais savoir comment récupérer en JS et sous firefox les coordonnées du curseur de la souris de façon non évenementielle.

    Je veux dire par non evenementielle que je souhaite récupérer a un moment quelconqie de mon script les coordonnées du curseur de la souris sans pour autant avoir a détecter tous les déplacements de cette dernière (pas de mousemove en parallele)...

    J'ai beau cherché sur le net, TOUT ce que j'ai pu trouver est basé sur un système evenementiel... Existe t-il pas tout simplement un truc du style mouse.x ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    Il y aura forcément de l'évènementiel ,
    suffit de lancer une focntion qui te retourne les coordonnées sur le onmousemove du body ...

    concentre tes recherches sur developpez, pas sur tout le net... cette réponse à déja été donnée ici ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <html>
    <head>
    <script type='text/javascript'>
    var e
    function getMouse(e){
    	var x,y;
    	var elt = document.documentElement;
    	if ( document.captureEvents ) {
    		x = e.pageX;
    		y = e.pageY;
    	} else if ( window.event.clientX ) {
    		x = window.event.clientX+elt.scrollLeft;
    		y = window.event.clientY+elt.scrollTop;
    	}
    	window.mouseX = x;
    	window.mouseY = y;
    document.test.x.value = x; 
    document.test.y.value = y; 
     
    }
    function populate(){document.onmousemove=function(event){getMouse(event)}}
    </script> 
     
    </head> 
     
    <body  onload='populate()' > 
     
    <form name="test"> 
    X: <input type="text" name="x" size="4"> Y: <input type="text" name="y" size="4"> 
    </form> 
     
    </body> 
    </html>

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Merci pour ta réponse, mais c'est exactement ce que j'esperait ne pas avoir...
    J'ai deja une solution évementiel dont j'essaye de me débarasser...

    Je vais donc conclure que c'est impossible... A defaut, existe t-il un moyen pour passer 2 parametres a une fonction evenemenielle ?

    exemple, j'ai une fonction bidule(e, val) que je veux associer a onclick...

    e devrait alors être l'evenement et val un paramètre dont la valeur dépend de l'élément sur lequel on clique (donc fixé dans le code) ?

    genre de la sorte, j'appel ma fonction bidule au moment d'un click sur l'element :

    <img src="./truc.png" onclick="bidule(event, 56)">, event étant là pour pouvoir récupérer la position du curseur dans la fonction (j'espere que l'element onclick contient au moins la position du clic). c'est possible de faire kkchose qui ressemble à ça ? quel serait la syntaxe de l'appel ?

    On considère que la contrainte primaire est de ne pas utiliser le onmousemove !

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function toto(e)
    {
      var posx= e==null ? event.clientX : e.pageX;
      var posy= e==null ? event.clientY : e.pageY;
      var msg = "position = (x,y)";
      alert(msg.replace('x',posx).replace('y',posy));
    }

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    merci pour vos réponses, mais je craint de ne pas comprendre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function toto(e)
    {
      var posx= e==null ? event.clientX : e.pageX;
      var posy= e==null ? event.clientY : e.pageY;
      var msg = "position = (x,y)";
      alert(msg.replace('x',posx).replace('y',posy));
    }
    Juste pour la forme, pourquoi ce msg.replace ? pourquoi pas tout simplement ecrire ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("position=("+posx+","+posy+")")
    Sinon, pour le prototype de la fonction, on est encore dans un cas d'evenementiel avec 1 seul paramètre, l'évenement... Or, l'objectif est de faire soit en non evenementiel (au moins la récupération des coordonnées du curseur), soit de faire une fonction evenementielle capable de recevoir 2 parametres... toto(e, val)

    En fait, je comprend pas bien la réponse...

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    re,

    il faut que tu te mettes bien en tête qu'il y aura forcément un événement pour la récupération de la position du curseur (cela a été dit précédemment).

    je ne vois pas où est le problème, si tu veux passer 2 paramètres à la fonction libre à toi . moi j'en ai passé un seul parce que j'avais pas besoin de plus.

    que fait la fonction ? tu as cliqué, donc il y a l'événement onclick qui a été déclenché. tu l'interceptes, et cet événement contient des informations. tu peux récupérer la position de la souris.

    quant au replace, ben chacun gère les chaînes comme il veut. moi j'aime bien cette méthode (qui ressemble à printf, string.Format, CString.Format et consors) qui me permet d'écrire une chaine formatée sans avoir à me soucier de ne pas me planter avec les guillemets, les +, etc... c'est plus clair et on voit tout de suite à quoi ressemblera le message. ça n'a rien d'obligatoire.
    pourquoi pas tout simplement ecrire ça ?
    parce que justement je ne trouve pas que ce soit plus simple du tout. ici on a peut-être qu'une petite chaîne, mais dans mon taf j'en ai de plus contexte et on s'embrouille...

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Citation Envoyé par bigboomshakala Voir le message
    il faut que tu te mettes bien en tête qu'il y aura forcément un événement pour la récupération de la position du curseur (cela a été dit précédemment).
    ça, pas de problème, je l'ai bien compris, et c'est bien pourquoi je demandais :
    A defaut, existe t-il un moyen pour passer 2 parametres a une fonction evenemenielle ?
    question a laquelle ne répondais pas selon moi les réponses que j'ai reçu... Faire un loopback ou appeler sur un onclick et lire l'event avec ce seul paramètre, ça pas de problème...

    Citation Envoyé par bigboomshakala Voir le message
    je ne vois pas où est le problème, si tu veux passer 2 paramètres à la fonction libre à toi . moi j'en ai passé un seul parce que j'avais pas besoin de plus.
    Bhé le problème, c'est la syntaxe... Comment faut-il faire pour passer 1 parametre en plus de l'evement a la fonction... Enfin surtout, comment faier l'appel de la fonction ?

    Prenon par exemple la fonction toto(e, val) ou e est l'event, et val est une variable quelconque... admettons qu'on veuille faire une f() qui affiche dans un alert() les coordonnées de la souris + la valeur de val... Le corps de la fonction, no problem mais... comment faire l'appel a la fonction dans le onclick ? Je parles bien du onclick="javascript:toto(???, 1);" ou ??? est censé être l'event (censé être envoyé automatiquement d'apres la doc) ? qu'est ce qu'il faut mettre à la place de "???" ? est-ce seulement la bonne syntaxe ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    je crois sincèrement que tu te compliques l'existance ...
    Parceque je n'ai rien compris à ton histoire de passage de paramètres ...
    peux-tu expliciter un peu avec un exemple d'appel à des fonctions...
    Je ne vois pas ce qui te parait si compliquer à faire sur un simple onclick ...

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    peux-tu expliciter un peu avec un exemple d'appel à des fonctions...
    Non car c'est précisémment ce que je demmande...

    Prenon la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto(e, msg)
    {
       alert(msg+"se trouve a la position "+e.pageX+"-"+e.pageY);
    }
    que je veux appliquer sur le onclick d'une image par exemple... Il faudrait donc l'appeler avec kkchose qui ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="/img/truc.png" onclick="javascript:toto(E, "blablabla")">
    mais ce n'est pas ça, car il faut mettre kkchose à la place du E.

    La question est donc bien de savoir comment faire l'appel a la fonction !

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var y,y;
     
    function getMouse(e){
    	var x,y;
    	var elt = document.documentElement;
    	if ( document.captureEvents ) {
    		x = e.pageX;
    		y = e.pageY;
    	} else if ( window.event.clientX ) {
    		x = window.event.clientX+elt.scrollLeft;
    		y = window.event.clientY+elt.scrollTop;
    	}
     
    }
     
    toto(e, msg)
    {
     getMouse(e)
       alert(msg+"se trouve a la position "+x+"-"+y);
    }

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Ok, et dans le onclick="" HTML du coups, ça donne quoi ?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="toto(e,'blablabla')"

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Donc le e sera juste une variable non déclarée et non réutilisé dans le code (j'imagine que getMouse() gère automatiquement l'event) ?
    Auquel cas, il n'est plus nécessaire de mettre le e dans le prototype de toto...

    Désolé, mais j'essaye de comprendre... j'ai du mal a concevoir qu'un langage sache a quelle variables du proto affecté automatiquement l'event...

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    ben si javascript ne sait pas faire grand choser mais event il sait ce que c'est.

    http://javascript.developpez.com/faq/?page=Evenement

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Ok merci beaucoup pour vos réponses. Je vais essayé ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Plugin] Récupérer la position du curseur
    Par Amon dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 12/02/2009, 10h38
  2. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02
  3. Position du curseur dans un TMemo
    Par yokito dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2003, 16h35
  4. Position du curseur
    Par gimlithedwarf dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2002, 23h45
  5. Position du curseur dans Edit
    Par MrJéjé dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo