Apelle d'une fonction avec un événement comme paramètre [Résolu]

Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
- - Dernière réponse : cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
- 1 mars 2008 à 15:06
Bonsoir, voila mon problème :

j'ai besoin d'appeler une fonction dont son paramètre est un événement mousemove, au travers d'un Timeout!

-->      setTimeout('mouseFunc('evt')',40);

j'ai essayer de plusieurs façon mais je n'ai pas réussis.

Ca fais un bon moment que je bloque avez-vous des idées?

Merci de vos réponses !
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
3
Merci
    le setTimeout est inutile.... si on ne déplace pas la souris !!!!!
>>Je n'arrive pas à passer la variable evt
    tu as l'exemple.

PS : relis ce que je t'ai mis plus haut

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
25
0
Merci
salut,

setTimeout('mouseFunc('evt')',40);
setTimeout("mouseFunc('evt')",40);





Si t'a besoin d'aide, MP !!!
Commenter la réponse de nicomilville
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
Merci de ta réponse mais j'ai déjà essayer. Je vais essayer de formuler plus précisément :

Voila grossièrement mon code :




function init()
{
    document.captureEvents(Event.MOUSEMOVE);
   
    var container = document.getElementById('container');
    container.addEventListener('mouseover',


func1


, true);
}

function func1(evt)
{   
   


func2


();
}

function


func2


()
{       
    setTimeout('


func1


',40);
}

Donc la fonction1 est appelée quand la souris est sur une div (id= container), puis elle appelle la fonction2 qui doit ré-appeler la fonction1.

Mais je n'arrive pas à cause de l'événement evt.

J'ai essayé ces différentes possibilités mais sans succès.




setTimeout('


func1


',40);




setTimeout('


func1()


',40);



setTimeout('


func1('+evt+')


',40);



setTimeout('


func1("evt")


',40);










Une idée ?
Commenter la réponse de aquanovax
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
Bonjour,

> document.captureEvents(Event.MOUSEMOVE);
    ce n'est plus nécessaire...
    FireFox exigeait ce genre d'appel il fut un temps, plus maintenant

function init()
{
    var container = document.getElementById('container');
    container.addEventListener('mouseover', func1, true);
}

function func1()
{   
    func2();
}

function func2()
{       
    setTimeout('func1();',40);
}

    ce que tu fais ne fonctionnera pas avec IE d'ailleurs.....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
Bonjour, merci de votre réponse, cependant comment récupérer la position de la souris dans la fonction1?
Commenter la réponse de aquanovax
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
ah... là effectivement... pour FF faut un truc que je trouve bizarre...

function Deplace(evt)
{    if (ie)     {    event.x+document.body.scrollLeft;
                        event.y+document.body.scrollTop;
                   }
    else        {    evt.pageX;
                       evt.pageY;
                  }
}
    var ie false;    /*@cc_on    ie true;    @*/   
    // pour détecter IE, j'aime bien, on peut faire autrement !
    document.body.onmousemove = function(event)
    // document.body ou un élément  bien entendu
    {    evt = event?event:window.event;
        Deplace(evt);
    }

un ch'tit exemple ici

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
Je n'y arrive toujours pas !


<hr size="2" width="100%" />
Voila plus précisément mon code :






/* Initialisation " appelée au chargement de la page" */

function init()
{
    /// Capture the mouse position
    document.captureEvents(Event.MOUSEMOVE);  // -> Ca ne marche plus si je supprime cette ligne
   
    /// Add event to container div
    var container =document.getElementById('container');
    container.addEventListener('mouseover', calculatemouse, true);
}

/* Cette fonction est appelée quand la souris se trouve sur une div */
function calculatemouse(evt)
{   
    /* opération sur la position de la souris */

    move(rel_x, inc);
}

function move(rel_x, inc)
{       
   

/* déplacement d'un objet */







     /*
        - Ré-appel la fonction calculatemouse pour ré-évaluer la position de la souris
        - C'est là que je n'arrive pas à appelé la fonction calculatemouse ( à cause de l'event )
    */
     setTimeout('calculatemouse(evt)',40);
}
Commenter la réponse de aquanovax
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
>>// -> Ca ne marche plus si je supprime cette ligne
    pourquoi ???? si tu la met  ça marche ????

    relis ce que je t'ai mis, appliques  et adpate ( si nécessaire )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
tu n'as pas respecté le moindre iota de mon exemple.....
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
Effectivement, je me suis trompé je l'admet cette ligne ne change rien.

Cependant  ta réponse n'a aucun rapport avec mon problème dans ton exemple une fonction est appelée quand la souris se déplace sur la page, tu récupère l'événement est appel la fonction déplace où tu récupère la position de la souris en fonction de IE ou FF ( je me trompe ?? ).

Dans mon code, Je
dois
appelé la fonction calculatemouse en continu ( à l'aide d'un setTimeout ) tant que la souris se trouve sur ma div container (bien entendu je fais un test pour savoir si elle s'y trouve toujours ou non).

Je n'arrive pas à passer la variable evt qui correspond à l'événement mousemove correctement de le setTimeout, je me demande d'ailleur si c'est possible.

PS : relis ce que je t'ai mis plus haut !
Commenter la réponse de aquanovax
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
>>le setTimeout est inutile.... si on ne déplace pas la souris !!!!!
    Je ne voyais pas les choses sous cette angle, je vais modifier mon code.

    Il est vrai que tant que la souris ne s'est pas déplacer, sa position est connu, mais le setTimeout rest nécaissaire car l'objet dois     continuer de se déplacer même lorsqu'il n'y a pas de mouvement.

>>
Je n'arrive pas à passer la variable evt
    tu as l'exemple.
>>>> Pas pour passer le paramètre dans un setTimeout essai et tien moi au courant !



>>tu n'as pas respecté le moindre iota de mon exemple.....
    ton exemple n'a strictement rien apporté, peut-être que ceci était dû à un manque d'explication de mon côté.

Bref je posterai la source quand elle sera prête, sache que j'accepte
ta réponse bien qu'imparfaite elle ma mise sur la bonne voie!

@+
Commenter la réponse de aquanovax
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
>> Pas pour passer le paramètre dans un setTimeout essai et tien moi au courant !

    ah... ton problème est passer un paramètre dans setTimeout ?
    rien avoir avec connaître la position de la souris alors ... si ?
    c'est seez bianire, j'allais te donner encore un exemple... mais :
>>ton exemple n'a strictement rien apporté,
    alors, je ne vois pas je que je pourrais faire de plus...
    puisque mon aide ne sert à rien...

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
25
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 février 2009
0
Merci
Je suis entrain de fair un visoineur d'image, la position de la souris est prise en compte pour adapter la vitesse de déroulement des images à la position de la souris dans la div conteneuse.

Je parlais de l'exemple 2. Ne te vexe pas!

@+ bon week-end
Commenter la réponse de aquanovax
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
>>Ne te vexe pas!
    trottoir...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez