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 :

simuler onmouseleave sous FF


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut simuler onmouseleave sous FF
    Bonjour

    Je m'arrache les cheveux. J'ai un DIV avec une propriété déclenché par onmouseOUT.

    ce DIV contient du texte et une image. Le problème c'est que dès que la souris passe sur l'image, le onmouseOUT se déclenche. Or je voudrais qu'il ne se déclenche qu'en sortant du DIV.

    L'événement onmouseleave (sous IE) fonctionne parfaitement pour faire ça, mais ça n'est pas supporté par FF.

    Il parait que la clé se cache dans le bubbling. J'ai beau tourné le truc dans tous les sens, impossible de faire ce que je veux faire... (cross-browser)

    Des idées ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut
    Il semblerait que le problème vienne des layers, et une solution serait

    http://www.quirksmode.org/js/events_...tml#mouseenter

    (section mousing out of a layer)

    Mais en pratique je n'arrive pas à insérer ce petit bout de code. Où ? Dans la fonction appelée par le onmouseout ? Avant ?

  3. #3
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    voici un petit script qui peut faire l'affaire :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    div{
     width: 200px;
     border: 1px solid #000000;
    }
     
    //-->
    </style>
     
    <script type="text/javascript">
    <!--
    var outImg = false;
    var timer = null;
     
    function mouseOverDiv()
    {
      clearTimeout(timer);
    }
     
    function mouseOutDiv()
    {
     if (outImg)
     {
      outImg = false;
      alert("coucou");
     }
    }
     
    function timerOutDiv()
    {
     timer = setTimeout("mouseOutDiv()","200");
    }
     
    function mouseOutImg()
    {
      outImg = true;
    }
     
    //-->
    </script>
     
    </head>
     
    <body>
    <div onmouseout="timerOutDiv()" onmouseover="mouseOverDiv()">
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
     
    <img onmouseout="mouseOutImg()" src="image.jpg">
     
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    </div>
     
    </body>
    </html>
    Explications :
    Détails des événements :
    img - onmouseout / div - onmouseout / div - onmouseover
    >Lors d'un mouseout sur l'image les événements mouseout et mouseover se produisent sur le div (toujours dans cet ordre).
    Le but est donc d'attendre le mouseover sur le div. S'il se produit on interdit
    l'exécution de la fonction appelée lors du mouseout sur le div.

    Donc :
    mouseout (précédé d'un mouseover) sur l'image > outImg = true (nous sommes passés sur l'image)
    mouseout sur le div > déclenchement d'une temporisation ( 200ms ici )
    mouseover sur le div > arrêt de la temporisation, la fonction mouseOutDiv() n'est pas appelée et outImg est toujours à true.
    mouseout sur le div (sortie du div) > déclenchement de la temporisation
    pas de mouseover sur le div dans le temps imparti > la fonction mouseOutDiv() est appelée et outImg = false

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut
    Merci pour cette réponse !

    Je vais essayer ça et je te tiens au courant.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/09/2011, 10h14
  2. Générer (ou le simuler) un sous domaine en PHP
    Par valentin45000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/08/2011, 21h27
  3. Réponses: 2
    Dernier message: 25/07/2011, 13h40
  4. Simuler UNIX sous Vista avec VirtualBox
    Par vivi78 dans le forum Linux
    Réponses: 3
    Dernier message: 13/12/2010, 11h25
  5. Simuler un sous domaine sur Apache ?
    Par renaud26 dans le forum Apache
    Réponses: 2
    Dernier message: 24/04/2006, 13h57

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