Prototype: problème avec "event"

Signaler
Messages postés
26
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
10 février 2010
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

J'ai un problème avec le code suivant:


 var myArray = $('body').getElementsBySelector('[infobulle]');

   myArray.each(function(item) {
      item.observe('mouseover', function(event){
      if ( Event.element(event).readAttribute('tag')  != undefined ) { 
      bulle_montre( Event.extend(event), 1 );    }
      });


function bulle_montre(event, tempo){   
     if (tempo > 0) 
      bulle_timeout = setTimeout( function(){
            montre( Event.extend(event) );
           }, tempo );
    else 
      montre( Event.extend(event) );
          
}



Le but est d'afficher une bulle au bout de x secondes, sachant que l'élément qui déclenche l'action est variable

Le problème apparait lorsque je défini une tempo, il faut que je fasse suivre le déclencheur jusqu'a la fonction montre(). Avec firefox le code marche tres bien , Le code ne génère pas d'erreur avec IE7 mais ne fonctionne pas et avec IE8 j'ai une erreur au niveau de:

bulle_timeout = setTimeout( function(){
            montre( Event.extend(event) );
           }, tempo );


L'erreur est "membre introuvable" (et oui ca raconte pas grand chose...)

Si quelqu'un a une idée?

Merci
Tious

3 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
moi y a n'a pas connaître les fonctionnalité de PROTOTYPE, mais je dirais à la vue du code que tu perds la référence à event dans la fonction transmise par le setTimeout
A brut je rajouterai le passage à la function de event comme suit
bulle_timeout = setTimeout( function(event){
  montre( Event.extend(event) );
}, tempo );

sans aucune garantie de moi même
sinon il existe surement un forum prototype !!!
;O)
Messages postés
26
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
10 février 2010

Je viens d'essayer en rajoutant event, l'erreur retournée est "nodeType a la valeur null ou n'est pas un objet" et là c'est le code des fichiers prototype qui retourne l'erreur.

J'ai déjà regardé les forums fr sans succès donc je vais aller fouiller un peu sur les forums en anglais.

Merci tout de même, et si quelqu'un a d'autres idées je suis preneur...

Tious
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
montre nous ta fonction montre que l'on voit son fonctionnement, sans pour autant aller décortiquer le code prototype
Je note en passant que la nature des paramètres passés ne me semble pas cohérente
appel au début de
bulle_montre( Event.extend(event), 1 );
ensuite du déclare
function bulle_montre(event, tempo){
et tu utilises
montre( Event.extend(event) );
!!!!!!
;O)