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 : Mon contenu actionne onmouseout :(


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut Bug : Mon contenu actionne onmouseout :(
    Bonjour,

    J'ai un code sympa pour un menu qui bouge en mouseover/out.
    http://www.an16test.org/viewforum.ph...k=0&fap=0&ap=1

    Mais il me reste un problème que je n'arrive pas annihiler.
    Tant que je reste dans la div, là où il n'y a aucun contenu ca marche nikel.
    Mais si je passe la souris sur un lien ou sur une des bordures de célulles de la table ca action onmouseover.

    Comment faire pour que onmouseover ne s'active que si on quitte la div entière ?

    Bonne journée

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 78
    Par défaut
    Salut,

    Tu propages tes évènements à tous les éléments présents dans ton div ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut
    Je ne comprend pas trop la question.

    Voici la partie du code correspondante :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="div_menu" class='bulle_deco menu_header' style="top:-10px; left:-440px; width:500px; height:120px; padding:10px; border:solid; border-width:1; " onmouseover="javascript:menu('over',1)" onmouseout="javascript:menu('out',1)">
    Et de dans donc je colle tous mon contenu.
    Un tableau avec des liens, des boutons... comme un menu

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 78
    Par défaut
    En fait je voulais savoir si les élements qui sont contenus dans ton div ont aussi quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseover="javascript:menu('over',1)" onmouseout="javascript:menu('out',1)"
    Mais j'ai ma réponse.

    A mon avis le plus simple est d'utilisé une librairie comme JQuery
    qui te permettra faire en sorte que le survol d’éléments interne à ton div ne provoque pas les évènements onmouseout/onmouseover. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('#test').hover(function() {
    // le curseur passe sur l'élément
    },function() {
    // le curseur sort de l'élément
    });
    Sinon, il faut que tu modifie le code de la fonction "menu" pour détecter que la souris est entré ou sortie d'un élément interne à ton div et donc qu'aucune action est requise

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Par défaut
    C'est aussi ce que m'a dit un ami. Mais il n'était pas certain qu'il n'y ai pas d'autre solution.

    Est-ce que Jquery va me demander de refaire tout mes codes ?
    Je viens de passer des heures à réussir ce fichu menu qui bouge (j'en suis a minimiser le code).

    Il va me falloir quelques basse, celles nécessaire à l'accomplissement de ce que j cherche à faire

    Tu aurait un lien ?

    EDIT :
    Je suppose que je dois commencer par ecrire ca :
    <script src="http://code.jquery.com/jquery-latest.js"></script>


    J'ai essayé de modifier un script déjà existant et le problème est le même
    http://www.an16test.org/test.php

    Quand on passe la souris sur un element ca joute +1 au compte
    Tu peux editer la page, il n'y a que le script dedans

    Bonne journée

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 098
    Par défaut
    Citation Envoyé par westernz Voir le message
    Est-ce que Jquery va me demander de refaire tout mes codes ?
    Oui. Arno a fait cette erreur que beaucoup de membres du forum font depuis quelques temps : proposer l'installation de la lib jQuery complète pour « simplifier » le codage d'une seule situation particulière. Ça revient à utiliser un bazooka pour tuer une mouche...

    En JavaScript pur, je te conseille fortement d'utiliser les gestionnaires d'évènements. Tu dois pour cela laisser tomber les attributs HTML onmouseover et ses semblables. Un petit exemple :
    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
    <div id="carre"></div>
    <style>
    #carre { width:100px; height: 100px; background: green }
    </style>
    <script>
    var $carre = document.getElementById('carre');
     
    $carre.addEventListener('mouseover', function( e ) {
       this.style.background = 'red';
    }, false);
     
    $carre.addEventListener('mouseout', function( e ) {
       this.style.background = '';
    }, false);
    </script>
    Comme tu le vois, avec cette méthode, le code HTML n'est pas « pollué » par du script.
    Ce qu'on appelle les gestionnaires d'évènements, ce sont ces fonctions anonymes passées en argument à la méthode addEventListener. Elles ont en paramètre un objet Event que j'ai appellé e ici (mais je ne l'utilise pas dans cet exemple). Cet objet possède des propriétés importantes, notamment la propriété relatedTarget qui te permet de savoir sur quel élément le curseur était juste avant que l'évènement mouseover se produise.

    Il te suffit de vérifier, par un bref parcours du DOM, si le relatedTarget est contenu par l'élément que tu surveilles, auquel cas ton gestionnaire ne fait rien. C'est ni plus ni moins ce que fait jQuery sous le capot.

    Un point important : Microsoft rend les choses compliquées (comme d'hab quoi) en ayant sa propre syntaxe de gestionnaires d'évènements. Je te conseille de faire des recherches à propos de attachEvent, ainsi que les propriétés fromElement et toElement de l'objet Event sous MSIE. Si tu es à l'aise en anglais, le site Quirksmode est une très bonne source. Par exemple : http://www.quirksmode.org/js/events_...#relatedtarget

    Bonne lecture
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. La barre de défilement décale mon contenu!
    Par Isotrope2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 12/09/2010, 22h26
  2. BUG IE,contenu décallé
    Par libuma dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 27/11/2008, 13h25
  3. Décalage de mon contenu
    Par Topheur dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2007, 10h06
  4. IE7 bug mon pc
    Par lynda skywing dans le forum IE
    Réponses: 8
    Dernier message: 12/03/2007, 17h30
  5. [JTable] Cellule editable qui efface mon contenu
    Par Zanton dans le forum Composants
    Réponses: 4
    Dernier message: 01/06/2006, 12h34

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