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 :

Remove d'un événement


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Remove d'un événement
    Bonjour,
    Grand débutant sur le logiciel Animate cc, je me lance sur les bases rudimentaires du JS. Je souhaite supprimer un écouteur "click" avec removeEventListener mais ma façon de m'y prendre ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    this.monBouton.addEventListener("click", maFonction.bind(this)); 
    function maFonction()
    {
    this.monClip.play();
    this.monBouton.removeEventListener("click", maFonction.bind(this));
    }
    J'ai également essayé de l’insérer dans un autre bouton mais le résultat est identique.
    Un grand merci pour toute aide.

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    salut, je sais que je ne vais pas repondre directement a ta question, mais si tu fais : ajoutEvent -> fonction -> suppressionEvent
    pourquoi ne pas juste rajouter l'option once a ton event, ca evitera la suppression inutile

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    this.monBouton.addEventListener("click", maFonction.bind(this), {once:true});
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2014
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Un grand merci pour la réponse.
    Il me semble que l'on ne peux pas supprimer facilement lorsque bind(this) est présent. Etant grand débutant, je ne sais pas pourquoi mon écouteur ne marche pas pas ce bind.
    Cela ne marche donc pas avec {once:true} et c'est bien dommage: c'est ce que je recherchais. Merci tout de même. Une autre suggestion ?

  4. #4
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Quelques conseils :

    1) Analyser le problème en faisant plein d'affichages avec console.log ou alert.
    Exemple :
    alert(maFonction.bind(this)===maFonction.bind(this)) affiche "false".
    La fonction maFonction.bind(this) dans le removeEventListener ne se réfère donc pas à la même fonction que celle du addEventListener, d'où l'erreur.

    2) Faire des recherches à partir des mots clés.
    Par exemple, si on tape "addEventListener removeEventListener bind(this)" sur un moteur de recherche, on a tout de suite des réponses à la problématique.
    Une solution est bien sûr d'affecter le retour du premier maFonction.bind(this) dans une variable/propriété qu'on réutilise dans le removeEventListener.

    3)
    Citation Envoyé par Jean rené Voir le message
    Cela ne marche donc pas avec {once:true} et c'est bien dommage: c'est ce que je recherchais. Merci tout de même. Une autre suggestion ?
    Au minimum, faire preuve de prudence, d'autant plus quand le profil de la personne qui a répondu laisse penser qu'elle s'y connaît.
    Donc plutôt dire : "Je n'arrive pas à le faire fonctionner. Est-ce que je m'y prends mal ou alors y a-t-il une autre solution ?".
    La solution de Doksuri devrait fonctionner (mais pas sur Internet Explorer).

    4) Fournir un code minimaliste prêt à être testé.
    Cela incite davantage les gens à tester, tout en leur faisant gagner du temps.
    Exemple (sans correctif) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <input id="test" type="button" value="Valider">
    <script>
    this.monBouton=document.getElementById("test");
    this.monBouton.addEventListener("click", maFonction.bind(this)); 
    function maFonction()
    {
    alert("ici");
    this.monBouton.removeEventListener("click", maFonction.bind(this));
    }
    </script>

Discussions similaires

  1. Probleme avec Remove Element
    Par sk316 dans le forum Flex
    Réponses: 13
    Dernier message: 09/01/2011, 18h50
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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