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 :

Gros problème de onmouseout


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut Gros problème de onmouseout
    J'ai cherché dans différents forum mais je n'ai pas trouvé une solution satisfaisante. Je vous montre mon code et en explique le probleme. Je ne mets pas le css car le problème ne vient pas de là

    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
     
    Partie HTML
     
    <body>
    <script type="text/javascript" src="animation.js"></script>
    <div id="bloc" onmouseout="disappear()"><!--onmouseleave-->
    	<div id="logo" onmouseover="appear()"><div id="logo_img"></div></div>
    	<div id="link">
    		<li><span class="title">Entreprise Fake</span></li>
    		<li><span class="text">blablalblalal</span></li>
    		<li><a href="#">www.samsung.fr</a></li>
    	</div>
    	<div id="services">
    		<img src="img/movie.png"/>
    		<img src="img/phone.png"/>
    		<img src="img/note.png"/>
    	</div>
    </div>
    </body>
    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
     
    Partie javascript
     
    function anim_logo(state)
    	{
    	if(state==true)
    		{
    		document.getElementById("link").style.display="none";
    		document.getElementById("services").style.display="block";
    		}
    	else if(state==false)
    		{
    		document.getElementById("link").style.display="block";
    		document.getElementById("services").style.display="none";
    		}
    	}
     
    function appear()
    	{
    	anim_logo(true);
    	}
     
    function disappear()
    	{
    	anim_logo(false);
    	}
    Ce que je veux que ca fasse:
    Passer sur le logo et que celui-ci fasse disparaitre le div link et apparaitre le div services par une animation (dont le probleme vient d'etre resolu sur le forum)- Cette partie marche
    Ensuite lorsque que je quitte le div bloc qui contient tout, je voudrais que e div services disparaisse et laisse ca place au div link

    Problème:
    Lorsque je quitte le logo, le div bloc déclenche l'événément onmouseout

    Solution partielle:
    Sous IE il existe l'événement onmouseleave, c'est exactement cela que je veux mais il me faudrait un équivalent pour Firefox

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je ne comprends pas ce que tu veux faire ?

    tu y ajoutes le code de fading ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Oui je vais le rajouter après, en fait j'ai deja fait pas mal de test et je recommence depuis le début afin d'avoir un code propre.
    J'avai deux problèmes, le fading sous IE et celui de la détection du onmouseout.

    Le problème de fading est résolu (merci) mais maintenant ya le onmouseout qui se déclenche dès que je quitte le div logo et non lorsque je quitte le div bloc.


    J'ai peut-etre une idée car j'avais deja remarque que si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="bloc" onmouseout="disappear()">
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="bloc" onmouseout="disappear()" onmouseover="appear()">
    Mais le problème c'est que vu que j'ai une fonction de fading, cela va se voir puisque l'animation va se relancer

    Donc je pense à une solution de lancer une fonction stay() à la place du appear() pour l'événement onmouseover.
    Ca peut peut etre marche, je vais tester.
    Si vous avez des idées, n'hésitez pas

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ha ça y'est pigé ... pfff les enurones du lundi matin ne sont plus ce qu'ils étaient ...

    en fait lorsque tu passes sur les sous divs, il considère que tu quittes le div ...

    la seule solutin que je verrais dans ton cas c'est de mattre une variable flag à true lorsque tu quittes vraiment le div et la mettre à fasle lorsque tu passes sur les sous div ... et lancer un test sur le variable en première ligen de la fonction de disparition ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Je viens de tester ta solution Space frog, ca ne fonctionne pas

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si elle focntionne, tu n'as juste pas du bien l'implementer ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    En fait je ne comprends pas comment tu peux préciser que tu as "vraiment" quitter le div bloc. Comment faire la différence entre le moment ou tu sors du logo pour aller sur le bloc et le moment ou tu quittes le bloc pour alleer vers l'exterieur?

    J'ai suivi ce que tu as dit et ca ne fonctionne pas

    Je viens de tester ma fonction stay() et ca fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("link").style.display="none";
    	document.getElementById("services").style.display="block";
    Je sais c'est la meme que appear(), pour l'instant mais dans appear, il y aura une animation, pas dans stay()

    PS: Merci Spacefrog de m'avoir aidé, j'aimerai bien tout de même faire fonctionner ta solution car c'est elle qui est la plus propre. Je vois tout afait ce que tu veux dire en parlant de flag, j'avais déjà essayé mais impossible de détecter correctement

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    mets une variable gobale sur ta page

    var flag=false

    sur le onmouseover du div coneteneur tu la mets à false ainsi que sur le onmouseover des sous divs

    tu ne la mets à true que sur le onmouseout du div conteneur...

    puis en première ligne de la fonction de disparition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (flag){return false;}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    J'ai fait comme tu as dit mais ca ne fonctionne pas, ca empeche la fonction de disparition
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Animation liens</title>
    <link href="animation.css" rel="stylesheet" type="text/css" />
    </head>
     
    <body>
    <script type="text/javascript" src="animation.js"></script>
    <div id="bloc" onmouseout="disappear();javascript:flag=true;" onmouseover="javascript:flag=false;">
    	<div id="logo" onmouseover="appear();javascript:flag=false;"><div id="logo_img"></div></div>
    	<div id="link" onmouseover="flag=false;">
    		<li><span class="title">Entreprise Fake</span></li>
    		<li><span class="text">blablalblalal</span></li>
    		<li><a href="#">www.samsung.fr</a></li>
    	</div>
    	<div id="services" onmouseover="javascript:flag=false;">
    		<img src="img/movie.png"/>
    		<img src="img/phone.png"/>
    		<img src="img/note.png"/>
    	</div>
    </div>
    </body>
    </html>
    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
    var flag=false;
    function anim_logo(state)
    	{
    	if(state==true)
    		{
    		document.getElementById("link").style.display="none";
    		document.getElementById("services").style.display="block";
    		}
    	else if(state==false)
    		{
    		document.getElementById("link").style.display="block";
    		document.getElementById("services").style.display="none";
    		}
    	}
     
    function appear()
    	{
    	anim_logo(true);
    	}
     
    function disappear()
    	{
    	if (flag)
    		{
    		return false;
    		anim_logo(false);
    		}
    	}
    Peux-tu me dire ce qui ne va pas?.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut


    mets le flag à true AVANT de lancer la fonction !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseout="javascript:flag=true;disappear();"
    à chaque fois ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    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,

    ceci porra sans doute t'aider à comprendre la gestionn d'un même événement sur un élément parent et ses enfants :
    http://www.developpez.net/forums/sho...%E9v%E9nements

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Ca ne fonctionne toujours pas

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Merci auteur, ton script qui détecte d'où tu sors et où tu rentres est exactmetn ce que je recherchais à détecter comme événement.
    Je vais tester

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    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
    <script type='text/javascript'>
    var flag=false
    function sorti(){ //alert(flag)
    						if(!flag){return false;}
    						alert('sorti')
     
                             }
    </script>
     
    </head>
     
    <body>
    <div style="height:100px;width:200px; position:absolute; top:50px;left:60px; background-color:red;" onmouseover="flag=false;" onmouseout="flag=true;setTimeout(function(){sorti()},100);">&nbsp;
     	<div style="height:50px;width:20px; position:absolute; top:5px;left:80px; background-color:blue;" onmouseout="flag=false" onmouseover="flag=false;">&nbsp;</div>
        <div style="height:10px;width:50px; position:absolute; top:10px;left:10px; background-color:yellow;" onmouseout="flag=false" onmouseover="flag=false;">&nbsp;</div>
    </div>
    </body>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 98
    Par défaut
    Merci SpaceFrog, ca marche!!!!!

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Juste un détail, baisse la durée du setTimeout au maximum car si tu sors très vitre de deux niveaux de divs la focntion se declenche deux fois ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [Lecture de FichierXML] <--Gros problème
    Par waldo2188 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 18/03/2005, 17h15
  2. gros problème id
    Par Sékiltoyai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2004, 11h53
  3. Gros problème avec la facturation de Tiscali
    Par Harry dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 21/10/2004, 18h55
  4. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 09h21
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 18h10

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