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 :

removeEventListener et Firefox


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut removeEventListener et Firefox
    Bonjour,

    J'ai un problème avec removeEventListener sur FIREFOX (pas sur IE pour une fois).

    J'ai 2 DIV, chacune associées à 2 événéments (window scroll et window resize).

    Le fonctionnement souhaité : lorsque les événements de la DIV2 opèrent, ceux de la DIV1 doivent être arrêtés et réciproquement. j'emploie donc des addEventListener et removeEventListener alternativement.

    ce lien m'a aidé pour piger qlq trucs : http://developer.mozilla.org/fr/DOM/...eEventListener

    Je déroule ce que les traitements par étapes ci-dessous :

    ####### etape 1 #######
    GESTIONNAIRE ONLOAD => addEventListener DIV1
    traitement dans onload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.addEventListener('scroll',FNC_DIV1,true);
    window.addEventListener('resize',FNC_DIV1,true);
    action :
    Si je scroll ou resize ma page, la DIV1 se déplace vers une position calculée (ACTION OK).


    ####### etape 2 #######
    SI TRAITEMENT 2 ALORS removeEventlistener DIV1 ET addEventListener DIV2
    traitement dans fonction traitement 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    window.removeEventListener('scroll',FNC_DIV1,true);
    window.removeEventListener('resize',FNC_DIV1,true);
    [...]
    window.addEventListener('scroll',FNC_DIV2,false);
    window.addEventListener('resize',FNC_DIV2,false);
    action :
    La DIV1 ne devrait plus se déplacer (ACTION NOK (aléatoire))
    La DIV2 se déplace si je scroll ou resize la page (ACTION OK).


    ####### etape 3 #######
    SI TRAITEMENT 1 ALORS removeEventListener DIV2 et addEventListener DIV1
    traitement dans fonction traitement 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    window.removeEventListener('scroll',FNC_DIV2,false);
    window.removeEventListener('resize',FNC_DIV2,false);
    [...]
    window.addEventListener('scroll',FNC_DIV1,true);
    window.addEventListener('resize',FNC_DIV1,true);
    action :
    La DIV2 ne devrait plus se déplacer (ACTION NOK (aléatoire))
    La DIV1 doit à nouveau se déplacer sur scroll ou resize (ACTION OK)

    Bref les removeEventListener marchent pas toujours. Ou bien les événements sont parfaitement coupés ou bien pas du tout.

    Que faire ?

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    tu n'es pas seul dans ton monologue, que je suis depuis un moment
    Ton problème n'est-il pas dû à ceci (trouver dans le lien addEventListener en bas de la page removeEventListener ci-dessus) :
    Écouteurs multiples et identiques
    Si plusieurs écouteurs (EventListeners) sont enregistrés sur la même cible (EventTarget) avec les mêmes paramètres, les instances en double sont ignorées. L'écouteur ne sera pas appelé plusieurs fois, et comme elles seront ignorées elles ne doivent pas être enlevés à l'aide de la méthode removeEventListener.
    Du coup est-ce que ça ne pourrait pas être dû au paramètre useCapture positionné un coup à true un coup à false, qui perturberait la reconnaissance du bon listener pour la suppression .... ?
    Ou n'est-ce pas dû au addEventListener plutôt qu'au remove (voir les remarques sur IE sur la page de Mozilla) ?

    A+

  3. #3
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Oui j'étais partis sur beaucoup de posts, donc j'ai tout recombiné en un seul .

    A vrai dire le UseCapture me perturbe pas mal.
    J'ai testé à plusieurs reprises TRUE et FALSE, mais ça n'a pas résolu mon problème.

    Mais je vais tester ce paramètre un peu plus...

    Merci !

  4. #4
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    mmmmh, je ne m'en sors pas trop avec ce 3ème paramètre UseCapture.

    A quoi sert-il très concrêtement ?

    Et sinon, comment faire en sorte de pouvoir affecter plusieurs événement, en l'occurrence scroll et resize, sur un même élément sans que ça soit considérer comme un doublon ?

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par speedev Voir le message
    mmmmh, je ne m'en sors pas trop avec ce 3ème paramètre UseCapture.

    A quoi sert-il très concrêtement ?
    Un petit shéma valant mieux qu'un long discours : regarde là.

    Et sinon, comment faire en sorte de pouvoir affecter plusieurs événement, en l'occurrence scroll et resize, sur un même élément sans que ça soit considérer comme un doublon ?
    Ca ne serait pas des doublons dans le cas de 2 évènements distincts :
    Si plusieurs écouteurs (EventListeners) sont enregistrés sur la même cible (EventTarget) avec les mêmes paramètres,
    Le nom de l'évènement est un des paramètres (scroll, resize) ...

    A+

  6. #6
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Oui je l'ai vu ce schéma mais difficilement compris.
    Sinon c'est bien ce que je comprenais, je ne suis pas dans le cas des doublons.

    Je vais bien finir par trouver là où ça coince.

    Merci encore

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par speedev Voir le message
    Oui je l'ai vu ce schéma mais difficilement compris.
    Sinon c'est bien ce que je comprenais, je ne suis pas dans le cas des doublons.
    cancelBubble empêche la propagation "vers le haut" :
    dans une <table> si un onclick est défini sur le tr et un autre sur le td, le click sur un td déclencheras la fonction associée au td, mais pas celle du tr
    Ton paramètre capture doit avoir l'effet inverse : déclencher celui du tr mais pas du td ...

    Ceci dit, dans ton cas, je ne vois pas les implications

    Et puis ce sont des propriétés que j'utilise rarement

    D'autres auront peut être des infos plus précises ...

    A+

Discussions similaires

  1. Ecouter la radio avec Firefox
    Par Cian dans le forum Applications et environnements graphiques
    Réponses: 20
    Dernier message: 14/07/2005, 19h19
  2. Réponses: 18
    Dernier message: 19/08/2004, 15h11
  3. [XML][XSL][Mozilla Firefox] Integraton dans une page JSP
    Par BANATACH dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/08/2004, 14h46
  4. Java ne fonctionne pas sous Firefox
    Par Info-Rital dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 29/07/2004, 23h37

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