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 :

Javascript - Solutions pour éviter la désactivation de l'interception des événements


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut Javascript - Solutions pour éviter la désactivation de l'interception des événements
    Bonjour,

    Quelles sont les solutions Javascript pour éviter ce problème (rencontré sous IE7) de désactivation de l'interception des événements :

    Si on déclare une interception d'événement sur un élément du BODY (dans l'exemple : un 'onmousedown' sur une DIV), et si on modifie ensuite le contenu du BODY => alors l'interception initiale se retrouve désactivée.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       <HTML>
          <BODY>
             <DIV id=adiv>Cliquez ici</DIV>
             <SCRIPT type=text/javascript>
                adiv.onmousedown = function() {alert ("Mouse down")};
                alert(adiv.onmousedown);         // Affiche la fonction, tout est ok 
                document.body.innerHTML += "c" ;
                alert(adiv.onmousedown);         // Affiche 'null', le 'mouse down'  
                                                 // n'est plus intercepté
             </SCRIPT>
          </BODY>
       </HTML>
    Si on retire la ligne "document.body....", le 'mouse down' est intercepté normalement.

    Merci de vos suggestions

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    effectivmeent, il y a matière à réflexion;
    en tout cas, essaie d'insérer plus proprement des contenus dans le document, et pas au chargement (moment qui paraît peu propice);

  3. #3
    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 143
    Points
    11 143
    Par défaut
    bonjour,

    tu n'as pas le choix, tu dois utliser les méthodes du DOM :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <html>
    <head>
    <title></title>
     
    </head>
     
    <body>
             <div id="adiv">Cliquez ici</div>
     
     
             <script type="text/javascript">
                adiv.onmousedown = function() {alert ("Mouse down")};
                alert(adiv.onmousedown);
     
                document.body.appendChild(document.createTextNode("coucou"));
                alert(adiv.onmousedown);
     
             </script>
    </body>
     
    </html>

    ou si tu tiens au innerHTML, tu es obligé de créer un élément vide pour insérer ton texte :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <html>
    <head>
    <title></title>
     
    </head>
     
    <body>
             <div id="adiv">Cliquez ici</div>
     
             <div id="divVide"></div>
     
     
             <script type="text/javascript">
                adiv.onmousedown = function() {alert ("Mouse down")};
                alert(adiv.onmousedown);
     
                document.getElementById("divVide").innerHTML = "coucou";
                alert(adiv.onmousedown);
     
             </script>
     
     
    </body>
     
    </html>

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Je me répète mais inner est un vieux truc conservé par compatibilité

    utilisez toujours le dom vous aurez moins de pbs

    A+JYT

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

Discussions similaires

  1. Une Solution pour désactiver la touche Caps Lock
    Par Graffito dans le forum Windows
    Réponses: 7
    Dernier message: 15/05/2017, 20h53
  2. [Encodage] Solution pour éviter le bug "À"
    Par loribac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/12/2013, 21h57
  3. Recherche de solution pour éviter une erreur 404 sur une img
    Par link256 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 11/12/2009, 11h11
  4. [Javascript][XSLT] Meilleur solution pour trier des données ?
    Par buzzkaido dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2006, 13h26
  5. Réponses: 2
    Dernier message: 28/06/2006, 08h53

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