Connaître la position du curseur à un temps donné

Résolu
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 22 mars 2009 à 02:52
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 22 mars 2009 à 15:07
Bonjour,
J'ai une question tout bête que je ne suis pas capable de régler. Je voudrais avoir la position du curseur à chaque seconde. J'ai tenté d'utiliser SetTimeOut mais cela ne semble pas fonctionner.

Mon code:

<SCRIPT LANGUAGE=JavaScript>
function position(e)
{x (navigator.appName.substring(0,3) "Net") ? e.pageX : event.x+document.body.scrollLeft;y (navigator.appName.substring(0,3) "Net") ? e.pageY : event.y+document.body.scrollTop;
document.getElementById('x').value=x;document.getElementById('y').value=y;
setInterval("position(event)",1000);
}
window.onload = position;
</script>

Ça me retourne undefined à chaque fois et j'ai vraiment besoin d'avoir la position du curseur à chaque seconde seulement

Merci beaucoup

------JDMCreator

13 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 14:14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
   
       
.

        <script type="text/javascript">
                var posCur={ "x":0, "y":0 };              
            function Deplace( evt )
            {   if ( window.event )
                      { posCur.x=window.event.x+document.body.scrollLeft;
                        posCur.y=window.event.y+document.body.scrollTop;
                      }
                else  { posCur.x=evt.pageX;
                        posCur.y=evt.pageY;
                      }
                return posCur;
            }
            document.body.onmousemove=function(event)
                {   Deplace( event );    };  
            setInterval( function()
                { document.getElementById("iddv").innerHTML=
                           "X:"+posCur.x+" / Y:"+posCur.y; }, 1000 );

        </script>
   
</html>

l'exemple en affichant que toutes les secondes....
mais ???? pourquoi faire ??? mystère ?????
ça n'apporte rien, au contraire , on affiche
alors que cela n'est pas nécessaire parfois !
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 10:22
Bonjour,


et pour ton script :

_ tu appelles 2 fois la fonction position !
et
window.onload = position; et
ici sans paramètre
c'est ce qui fait planter

_ on "ne fait pas ça" sur setTimeout lancé
au onload mais sur l'évènement onmousemove
de l'élément concerné
document.body.onmouseout=function(event)
{ ... }; par exemple


Cordialement [mon Site] [M'écrire] Bul
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 10:26
oulah ! la mise en page !

il fallait lire :

pour ton script :

_ tu appelles 2 fois la fonction position !
et
window.onload = position;
et ici sans paramètre ! c'est ce qui fait planter .

_ on "ne fait pas ça" avec setTimeout lancé au onload
mais sur l'évènement onmousemove de l'élément concerné

document.body.onmouseout=function(event) { ... }; par exemple

@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 10:29
oulah encore !
il fallait lire :
document.body.onmousemove=function(event) { ... }; par exemple
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 10:52
setInterval("position(event)",1000); que j'ai ouvlié de signaler aussi :
event entre guillemets c'est un string, pas une variable
et faire un setInterval dans la fonction ? ( setTimeout à la rigueur )
setInterval, c'est : toutes les "secondes" lancer la fonction position !
ça va saturer.
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
22 mars 2009 à 13:30
Bonjour,

Merci beaucoup pour vos réponses. Mais comme je l'ai dit, je souhaite avoir la position du curseur uniquement toutes les secondes et non à chaque mouvement de la souris. J'ai essayé d'utiliser mon setTimeOut de dizaines de façon différentes. Ça ne fonctionne pas et je ne comprends pas. Et aussi Bul3, qu'est-ce que je dois mettre dans l'appel de ma fonctione si ce n'est pas "event" ?

Merci beaucoup de l'attention que vous portez à mon problème

------JDMCreator
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 13:53
ben.. relis !

>>toutes les secondes et non à chaque mouvement de la souris
on utilise onmousemove pour savoir où est la curseur !
maintenant, pour exploiter cette position, bine entendu,
tu peux mettre une fonctions appelée avec setTimeout

>>J'ai essayé d'utiliser mon setTimeOut de dizaines de façon différentes.
probablement pas comme il faut !

>>qu'est-ce que je dois mettre dans l'appel de ma fonctione si ce n'est pas "event" ?
je n'ai pas dis cela ! là aussi relis  !
tel que tu le fais, tu met "event" dans une chaîne de caractères
ce qui ne peut pas fonctionner !

regarde le lien de petoleTeam

un autre exemple que celui de petoleTeam ( mais
sur le même principe... bien entendu !!! )

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

   

       
.

        <script type="text/javascript">

            function Deplace( evt )

            {   var posCur={ "x":0, "y":0 };

                if ( window.event )

                      { posCur.x=window.event.x+document.body.scrollLeft;

                        posCur.y=window.event.y+document.body.scrollTop;

                      }

                else  { posCur.x=evt.pageX;

                        posCur.y=evt.pageY;

                      }

                return posCur;

            }

            document.body.onmousemove=function(event)

                {   var p=Deplace( event );

                    document.getElementById("iddv").innerHTML=
                           "X:"+p.x+" / Y:"+p.y;

                };  

        </script>

   

</html>

bon... là on affiche la position à chaque mouvement
si tu tiens à tout prix à ne le faire que toutes les secondes
( on se demande bien pourquoi ???? )
efface cette ligne :  document.getElementById("iddv").innerHTML="X:"+p.x+" / Y:"+p.y;

et ajoute ta fonction appelée toutes les secondes
     qui exploiterait posCur ( mis en variable globale )
mais bon... tu te compliquerais la vie de manière totalement inutile
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 13:57
le event sur un setTimeout, un setInterval :
est-ce que ça existe ?
est-ce que cela te permet de déterminer où est la souris ?
je doute....
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
22 mars 2009 à 14:13
Bonjour, merci pour la réponse rapide. Si j'ai besoin de connaître la position à chaque seconde uniquement c'est pour analyser les déplacements de la souris de chaque seconde à ceux de lorsque la souris bouge. En fait, c'est pour simuler la roulette du iPod. Cela me permettrait de voir si le curseur va à la gauche (comparatiement à la position prise chaque seconde) à droite, en haut ou en bas. Puis, avec cela, je pourrais augmenter ou baisser la valeur d'un champ de formulaire. Je vais essayer le code, merci beaucoup

------JDMCreator
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
22 mars 2009 à 14:25
Bonjour !

Comme je n'ai pas réussi à insérer directement le setTimeOut, j'ai créé une nouvelle fonction dans ton code. Encore merci beaucoup Bul 3 :D:D Voici le code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>


.

<script type="text/javascript">
function Deplace( evt )
{ var posCur={ "x":0, "y":0 };
if ( window.event )
{ posCur.x=window.event.x+document.body.scrollLeft;
posCur.y=window.event.y+document.body.scrollTop;
}
else { posCur.x=evt.pageX;
posCur.y=evt.pageY;
}
return posCur;
}
document.body.onmousemove=function(event)
{ var p=Deplace( event );
document.getElementById("iddv").innerHTML=
"X:"+p.x+" / Y:"+p.y;
};
function getPosition() {
document.getElementById('iddv2').value=document.getElementById('iddv').innerHTML;
setTimeout("getPosition()",1000);
}

</script>

</html>

Mais j'ai une dernière petite question : où est le bouton résolu je ne le trouve pas :P

------JDMCreator
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
22 mars 2009 à 14:45
si le setTimeout te convient...
bien que cela soit inutile, voire nuisible !
mais je ne dois pas voir toutes les billes ?

>>où est le bouton résolu
c'est <réponse acceptée>
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
22 mars 2009 à 15:07
Ah ok, c'est que j'utilise Safari et sous celui-ci on ne voit pas le texte du bouton au complet. On ne voit que réponse.

------JDMCreator
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
22 mars 2009 à 09:59
-1
Rejoignez-nous