Apelle d'une fonction avec un événement comme paramètre

Résolu
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009 - 29 févr. 2008 à 19:29
cs_bultez Messages postés 13615 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 !

14 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 14:06
    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]
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
29 févr. 2008 à 19:38
salut,

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





Si t'a besoin d'aide, MP !!!
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
29 févr. 2008 à 20:43
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 ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 10:47
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]
0

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

Posez votre question
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
1 mars 2008 à 11:48
Bonjour, merci de votre réponse, cependant comment récupérer la position de la souris dans la fonction1?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 12:01
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]
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
1 mars 2008 à 13:41
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);
}
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 13:48
>>// -> 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]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 13:51
tu n'as pas respecté le moindre iota de mon exemple.....
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
1 mars 2008 à 14:01
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 !
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
1 mars 2008 à 14:51
>>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!

@+
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 14:58
>> 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]
0
aquanovax Messages postés 25 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 février 2009
1 mars 2008 à 15:04
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 mars 2008 à 15:06
>>Ne te vexe pas!
    trottoir...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Rejoignez-nous