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 :

Bug IE7 IE8 position fixed et onclick


Sujet :

JavaScript

  1. #1
    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 : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut Bug IE7 IE8 position fixed et onclick
    Bonjour,

    Je suis tombé sur un bug surprenant concernant la gestion des évènements
    sur Internet Explorer 7 et 8

    Et j'aimerai bien savoir si quelqu'un a une explication rationnelle :-)

    Je pose un overlay qui occupe toute la page en position fixed
    top: 0; left: 0; bottom: 0; right: 0;

    Je gère le onclick dessus et aussi sur certains éléments de ma page.

    Sur tous les navigateurs excepté IE le overlay en position fixed gère
    le click et les autres éléments ne le voie pas.

    Sur IE, c'est le onclick de la div #dessous qui est traité, mais uniquement
    quand on click sur le texte (alors qu'on pourrait s'attendre à une gestion du
    click sur toute la div)

    Partout ailleur sur la page, c'est bien le onclick de l'overlay qui est traité.

    Ce n'est pas une question de remontée des évènement (bubbling) puisque
    l'overlay n'est pas enfant du div #dessous (ça change rien au problème de
    tenter de faire un preventDefault ou stopPropagation ou return false sur le
    gestionnaire d'évènement)

    Voici un code pour tester. Vous pouvez contourner le bug en appliquant
    une couleur de fond et une transparence (marche aussi avec une image
    de fond transparente). Pour cela décommentez dans le css.

    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
    16
    17
    18
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <div xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type='text/css'>
    #dessous { background-color: #ff0; }
    #overlay { 
      position: fixed; top: 0; left: 0; bottom: 0; right: 0;
      /* background: #000; opacity: 0; filter: alpha(opacity = 0); */
    }
    </style>
    </head>
    <body>
    <div id='dessous' onclick='alert("dessous")'>Dessous</div>
    <div id='overlay' onclick='alert("overlay")'></div>
    </body> 
    </html>
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    Bonjour,

    As-tu essayé de jouer avec les z-index ?

  3. #3
    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 : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Le problème n'est pas de trouver un contournement, c'est déjà fait.

    Ce que j'aimerai c'est une explication :-)
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    je pense qu'il n'y a tout simplement pas d'explication, car justement il s'agit d'un bug toute explication serait hasardeuse...

    mais en tout cas, merci !! je savais pas qu'on pouvais faire comme ca pour geler l'interface utilisateur

  5. #5
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par marcha Voir le message
    Le problème n'est pas de trouver un contournement, c'est déjà fait.
    C'est plus une (tentative d') explication qu'un contournement : si tu ne précises pas le z-index, c'est le nav qui décide de l'ordre d'empilement des 2 éléments.

    Et pour peu qu'IE décide de faire différemment des autres ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

Discussions similaires

  1. Position Fixed et IE7 [débutant hyper confirmé]
    Par donvtt dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 01/11/2010, 20h09
  2. Soucis avec la position fixed sous IE7
    Par Olivier Regnier dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/02/2008, 13h48
  3. Récupérer le top d'un élément en position: fixed
    Par Maximil ian dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/10/2007, 09h54
  4. Menu en position:fixed plus haut que la fenêtre
    Par Maximil ian dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 15/12/2004, 23h14
  5. Centrer une <div> en position fixe sous IE
    Par Jorus dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 23/09/2004, 15h29

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