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 :

Problème d'évenement ! Fermeture non demandée.


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Problème d'évenement ! Fermeture non demandée.
    Bonjour,

    J'apprend le javascript depuis hier et j'ai donc commencer un peu a trifouiller un code que j'ai trouvé sur un site. Je souhaite en faite afficher une fenetre DHTML quand on clique droit et que celle-ci se ferme quand la souris sort de la fenetre. Mais voila, il y a un bug et aucune erreur ne m'informe du problème. La fenetre se ferme quand on bouge la souris dans celle-ci.

    Voici mon code entre head et /head :
    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
    <style type="text/css">
    #bloc{
    	z-index:500;
    	position:absolute;
    	border:1px solid #9D9DA1;
    	background-color:#ffffff;
    	cursor:default;
    	visibility:hidden;
    }
    </style>
     
    <script language="JavaScript1.2">
    // Fonction position souris.
    function souris_position(a){
    	if(navigator.appName.substring(0,3) == "Net"){
    		position_x = a.pageX;
    		position_y = a.pageY;
    	}else{
    		position_x = event.x+document.body.scrollLeft;
    		position_y = event.y+document.body.scrollTop;
    	}
    }
     
    function bloc_open(){
    	document.getElementById("bloc").style.top = position_y-5;
    	document.getElementById("bloc").style.left = position_x-5;
    	document.getElementById("bloc").style.visibility ="visible";
    	return(false);
    }
     
    function bloc_close(){
    	document.getElementById("bloc").style.top = 0;
    	document.getElementById("bloc").style.left = 0;
    	document.getElementById("bloc").style.visibility ="hidden";
    }
     
    if(navigator.appName.substring(0,3) == "Net")document.captureEvents(Event.MOUSEMOVE);
    </script>
    Entre body et /body :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <div id="bloc" onMouseOut="bloc_close();">
    <table style="width:200px;"><tr>
    <td style="background-color:#566A99;
    font-family:Verdana; font-size:10pt; color:#FFFFFF; font-weight:bold;">&nbsp;Menu</td>
    </tr><tr>
    <td>a</td>
    </tr></table></div>
     
    <script language="JavaScript">
    document.onmousemove = souris_position;
    document.oncontextmenu = bloc_open;
    </script>
    Merci de votre aide !

  2. #2
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    En fait, je pense qu'on peut bouger la souris tant qu'on ne sort pas de la cellule de tableau (menu).. Quand on passe d'une cellule à l'autre, apparement, le navigateur considère que l'on n'est plus dans le bloc.

    En effet, il faudrait chercher à supprimer les espaces entre les cellules, j'ai essayé, mais ça n'a rien donné...

    Sinon il suffit d'utiliser autre chose qu'un tableau et cela fonctionne parfaitement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 159
    Points : 160
    Points
    160
    Par défaut
    J'ai résolu ton problème comme ceci :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    <html>
    <head>
    <style type="text/css">
    #bloc{
       z-index:500;
       position:absolute;
       border:1px solid #9D9DA1;
       background-color:#ffffff;
       cursor:default;
       visibility:hidden;
    }
    </style>
     
    <script language="JavaScript1.2">
    //initalisation
    gn_ref=null;
     
    // Fonction position souris.
    function souris_position(a){
       if(navigator.appName.substring(0,3) == "Net"){
          position_x = a.pageX;
          position_y = a.pageY;
       }else{
          position_x = event.x+document.body.scrollLeft;
          position_y = event.y+document.body.scrollTop;
       }
    }
     
    function bloc_open(){
       document.getElementById("bloc").style.top = position_y-5;
       document.getElementById("bloc").style.left = position_x-5;
       document.getElementById("bloc").style.visibility ="visible";
       return(false);
    }
     
    function bloc_close(){   
       document.getElementById("bloc").style.top = 0;
       document.getElementById("bloc").style.left = 0;
       document.getElementById("bloc").style.visibility ="hidden";
       clearInterval(gn_ref);
       gn_ref=null;
    }
     
    function bloc_startclose(){
       if(gn_ref==null)
       {
         gn_ref=setInterval("bloc_close()",100);
       }
    }
    function bloc_stopclose(){
       if(gn_ref!=null)
       {
          clearInterval(gn_ref);
          gn_ref=null;
       }
    }
     
    if(navigator.appName.substring(0,3) == "Net")document.captureEvents(Event.MOUSEMOVE);
    </script>
    </head>
    </html>
    <body>
    <div id="bloc" onMouseOut="bloc_startclose();" onMouseOver="bloc_stopclose();">
    <table style="width:200px;border:1px solid black;"><tr>
    <td style="background-color:#566A99;font-family:Verdana; font-size:10pt; color:#FFFFFF; font-weight:bold;">&nbsp;Menu</td></tr>
    <tr><td>a</td></tr>
    </table>
    </div>
     
    <script language="JavaScript">
    document.onmousemove = souris_position;
    document.oncontextmenu = bloc_open;
    </script>
    </body>
    Un problème connu dans la création de menu en dhtml avec plusieurs divs, mais das ce cas avec un seul div, je comprends pas bien le mouseout qui se déclenche :/

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci, sa marche ! Par contre étand novice, je voudrais savoir ce qu'est : clearInterval, setInterval ? Ils n'en parlent pas dans le livre.

    Merci de votre aide !

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

Discussions similaires

  1. problème de vérification formulaire (non bloquante)
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/05/2006, 12h02
  2. Problème de disque dur non reconnu sous WIN98
    Par kalash_jako dans le forum Composants
    Réponses: 5
    Dernier message: 12/05/2006, 14h28
  3. Problème (éviter des caractères non voulu)
    Par Le Rebel dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 13h30
  4. Indy : problème a la fermeture du client
    Par Rustine dans le forum Web & réseau
    Réponses: 1
    Dernier message: 26/01/2006, 17h50
  5. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17

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