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 :

[DOM] comportement du Gestionnaire d'évènements


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut [DOM] comportement du Gestionnaire d'évènements
    Bonjour.

    J'aurais besoin d'une info concernant la gestion des événements.
    Sur des pages générées à l'aide d'AJAX, j'assigne dynamiquement des événements à certains contrôles.
    Simulant un desktop, j'utilise un "dock" par bureau virtuel et lorsque je change de bureau virtuel, le dock est rechargé pour ne contenir que les applications fermées appartenant à ce bureau. Jusque là tout va bien, j'arrive à obtenir ma liste d'applications. Seulement, lorsque je passe du bureau A au B, puis reviens au A, lorsque je veux lancer une des applications du dock, celle-ci est bien lancée, mais ouvre plusieurs instances, le nombre correspondant au nombre de fois que j'ai affiché mon bureau sans effectuer de véritable rafraichissement de la page.
    Je me demandais donc si le fait d'ajouter un gestionnaire d'évènement ajoutait une action au eventHandler ou le remplaçait.

    Voici donc le code qui est utilisé pour ajouter le eventHandler
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dojo.event.topic.getTopic("addChannelTopic").subscribe(this,"handleAddChannelTopic");

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Je ne connais pas dojo, mais tu as deux manières d'assigner un évenement
    à un élément.

    1)
    element.onclick = référence_de_fonction;

    2)
    element.addEventListener(...) // standard
    ou
    element.attachEvent(...) // IE

    Dans le premier cas tu écrase la fonction existante si elle était définie.
    Dans le deuxième cas tu ajoutes une fonction à la liste des fonctions déjà
    définie. Ce qui expliquerai le comportement que tu observes.

    Tu dois avoir moyen dans dojo de retirer les fonctions liées à tes événement,
    il faudrait le faire avant de passer d'un bureau à l'autre ?

  3. #3
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    Dans ce que j'ai vu, je n'ai pas vu de gestion directe de l'attibut onclick. Je suppose donc qu'il utilise la seconde solution.

    Il ne me reste plus qu'à "faire joujou" pour supprimer les actions ...

    Par contre, un noeud DOM supprimé puis recréé conserve-t-il les actions associées aux évènements ?

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Si tu le supprime avec removeChild et que tu ne conserve pas de référence
    les évenements "partent" avec.

    Par contre, si tu fait un appendChild qqpart et que le noeud que tu crées
    existe ailleur dans le dom, il va être supprimé de là ou il était et replacé au
    nouvel endroit, dans ce cas, je pense que les événement sont maintenu.

    à tester

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Maj dynamique d'un gestionnaire d'événement
    Par Herode dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2006, 10h15
  2. Gestionnaire d'évènements pour les fichiers sur disque
    Par chourmo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 01/03/2006, 16h18
  3. Gestionnaire d'événements pour la souris en assembleur
    Par bassim dans le forum Assembleur
    Réponses: 2
    Dernier message: 09/12/2005, 23h45
  4. [VBA] Gestionnaire d'évènement commun
    Par Neilos dans le forum Access
    Réponses: 11
    Dernier message: 14/06/2005, 11h18
  5. Perte de gestionnaire d'événements dans une fenêtre
    Par Benjamin GAGNEUX dans le forum Composants VCL
    Réponses: 15
    Dernier message: 23/08/2004, 20h14

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