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 :

stopPropagation() et firefox


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut stopPropagation() et firefox
    Bonjour,

    J'ai deux div imbriquée avec chacune un évènement onClick différent le problème c'est que lorsque l’on clique sur la div la plus au dessus les deux fonction de chaque div sont exécutées j'ai donc trouvé la solution stopPropagation() te cancelBubble qui fontionne très bien pour tout les autres navigateurs mais impossible de le faire fonctionner sur firefox!!

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function modifier_produit(){
            alert('modifier');
    if (event.stopPropagation){ 
            event.stopPropagation(); 
                              } 
    event.cancelBubble = true;
                               }


    Merci de votre aide

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    - FireFox n'implémente pas d'objet event, particularité de IExplorer, il te faut passer event en paramètre à la fonction au minimum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function CancelEvent(e){
      if( e){
        e.stopPropagation();
        e.preventDefault();
      }
      if( window.event){
        window.event.cancelBubble = true;
        window.event.returnValue  = false;
        return;
      }
    }
    - stopPropagation est W3C et cancelBubble IE.
    Une page très instructive Présentation des évènements du DOM

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci mais je n'arrive pas a le faire fonctionner, j'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function modifier_produit(e){
            alert('modifier');
      if( e){
        e.stopPropagation();
        e.preventDefault();
      }
      if( window.event){
        window.event.cancelBubble = true;
        window.event.returnValue  = false;
        return;
      }
    }
    et mon code qui appel la fonction est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo'<div class="modifier"><img src="logo/modify.png" onMouseOver="change_modifier(this.id)" onMouseOut="remet_modifier(this.id)" onClick="modifier_produit()" id="modif'.$resultat->id.'" class="bouton_modif"></div>';

    Mais la fonction de la div du dessous est toujours appelée!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onClick="modifier_produit(event)"

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    en complément de ce qu'a écrit mekal tu ne peux pas faire l'appel en direct dans la balise et utiliser le e en direct.
    Il te faut dans ce cas tester l'existence de la méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function modifier_produit(e){
      var sMsg = e.stopPropagation ? "W3C" : "IExplorer";
      alert( sMsg);
     
      // stop la propagation
      if( e.stopPropagation){
        e.stopPropagation();
        e.preventDefault();
      }
      if( window.event){
        window.event.cancelBubble = true;
        window.event.returnValue  = false;
        return;
      }
    }
    testes avec
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div class = "modifier" onclick = "alert( this.tagName);">
      <img src = "logo/modify.png"
        id = "modif"
        class = "bouton_modif"
        onmouseover = "change_modifier(this.id)"
        onmouseout = "remet_modifier(this.id)"
        onclick = "modifier_produit(event);">
    </div>
    par exemple

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Ca fonctionne enfin !

    Un grand merci a vous

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

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