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 :

position curseur sous firefox


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Points : 104
    Points
    104
    Par défaut position curseur sous firefox
    Bonjour,

    Je ne connais pas bien le javascript, j'ai trouvé ce code sur internet pour faire une info-bulle. Elle s'affiche très bien sur internet explorer mais pas avec firefox. Sous firefox, la position de l'info-bulle se trouve dans le coin supérieur droit en position (0, 0).
    Le problème se trouve donc dans la méthode WhereMouse, ou sous firefox, elle renvoie (0, 0). Que doit-je adapter?

    Merci

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
     
    //-----------------------------------------------------------
    //  Nom Document : GFBULLE.JS
    //-----------------------------------------------------------
    var DOM = (document.getElementById ? true : false);
    var IE  = (document.all && !DOM ? true : false);
    var NS4 = (document.layers ? true : false);
    var NAV_OK   = ( DOM || IE || NS4);
    var NETSCAPE = (navigator.appName == "Netscape");
    var Mouse_X;        // Position X en Cours de la Mouse
    var Mouse_Y;        // Position Y en Cours de la Mouse
    var TopIndex = 1;   // Z-Index interne
    var Decal_X  = 5;   // Décalage X entre Pointeur Mouse et Bulle
    var Decal_Y  = 5;   // Décalage Y entre Pointeur Mouse et Bulle
    var bBulle= false;  // Flag Affichage de la Bulle
    //-------------
    function Void(){}
    //---------------------
    function GetObjet(div_){
      if( DOM) return document.getElementById(div_);
      if( IE)  return document.all[div_];
      if( NS4) return document.layers[div_];
    }
    //---------------------
    function GetStyle(div_){
      return (NS4 ? GetObjet(div_) : GetObjet(div_).style);
    }
    //---------------------
    function ObjHide( div_){
      var Obj = null;
      if( div_){
        Obj = GetStyle( div_);
        if( Obj){
          Obj.visibility= "hidden";
        }
      }
      return(true);
    }
    //-------------------------
    function ObjShow( div_, z_){
      var Obj = null;
      if( div_){
        Obj = GetStyle( div_);
        if( Obj){
          Obj.visibility = "visible";
          if( arguments[1] != null)
            Obj.zIndex = z_;
          else
            Obj.zIndex = TopIndex++;
        }
      }
      return(true);
    }
    //-----------------------------
    function ObjWrite( div_, html_){
      var Obj;
      Obj = GetObjet( div_);
      if( Obj) with( Obj){
        if( !NS4){
          innerHTML = html_;
        }
        else{
          document.open();
          document.write( html_);
          document.close();
        }
      }
    }
    //-----------------------------
    function ObjMove( div_, x_, y_){
      var Obj = null;
      var Arg = arguments;
      if( div_){
        Obj = GetStyle( div_);
        if( Obj){
          if( NETSCAPE){
            if( Arg[1] != null) Obj.left = parseInt( Obj.left) +x_;
            if( Arg[2] != null) Obj.top  = parseInt( Obj.top)  +y_;
          }
          else{
            if( Arg[1] != null) Obj.pixelLeft = parseInt( Obj.pixelLeft) +x_;
            if( Arg[2] != null) Obj.pixelTop  = parseInt( Obj.pixelTop)  +y_;
          }
        }
      }
    }
    //-------------------------------
    function ObjMoveTo( div_, x_, y_){
      var Obj = null;
      var Arg = arguments;
      if( div_){
        Obj = GetStyle( div_);
        if( Obj){
          if( NETSCAPE){
            if( Arg[1] != null) Obj.left = x_;
            if( Arg[2] != null) Obj.top  = y_;
          }
          else{
            if( Arg[1] != null) Obj.pixelLeft = x_;
            if( Arg[2] != null) Obj.pixelTop  = y_;
          }
        }
      }
    }
    //------------------------------------
    function ObjShowAll( div_, x_, y_, z_){
      var Obj = GetObjet( div_);
      var MaxX;
      var MaxY;
      var Top;
      var Left;
      var Haut;
      var Larg;
      var SavY = y_;
     
      if( Obj){
        //-- Récup. dimension fenêtre et DIV
        if( NETSCAPE){
          with( window){
            Left = pageXOffset;
            Top  = pageYOffset;
            MaxX = innerWidth;
            MaxY = innerHeight;
            if( MaxX > document.width)  MaxX = document.width;
            if( MaxY > document.height) MaxY = document.height;
            MaxX += Left;
            MaxY += Top;
          }
          if( NS4){
            Larg = Obj.clip.width;
            Haut = Obj.clip.height;
          }
          else{
            Larg = Obj.offsetWidth;
            Haut = Obj.offsetHeight;
          }
        }
        else{
          with( document.body){
            Left = scrollLeft;
            Top  = scrollTop;
            MaxX = Left +clientWidth;
            MaxY = Top  +clientHeight;
          }
          Larg = Obj.scrollWidth;
          Haut = Obj.scrollHeight;
        }
        //-- Réajuste dimension fenêtre
        MaxX -= Larg;
        MaxY -= Haut;
     
        //-- Application Bornage
        if( x_ > MaxX) x_ = MaxX;
        if( x_ < Left) x_ = Left;
        if( y_ > MaxY) y_ = MaxY;
        if( y_ < Top)  y_ = Top;
     
        //-- si en bas On réajuste
        //-- pour que la bulle ne prenne pas le focus
        if( y_== MaxY){
          var DeltaY = MaxY -SavY;
          y_ = MaxY - DeltaY -Haut -2*Decal_Y;
        }
     
        //-- On place la Bulle
        ObjMoveTo( div_, x_, y_);
        ObjShow( div_, z_);
      }
    }
    //------------------------
    function BulleWrite(title, txt){
     var Obj;
     var Html;
     Obj = GetObjet('Bulle');
     if( Obj){
        Html  = "<TABLE BORDER=0 CELLSPACING=0><TR><TD BGCOLOR='#0000c0'><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=4 WIDTH='100%' BGCOLOR='#FFFFE8'>";
        Html += "<TR><TD class='Bulle' NOWRAP ALIGN='LEFT'>";
        Html += title;
     
        //-- Rajout pour la démo
    	Html += "<BR><HR>" + txt;
     
        Html += "</TD></TR></TABLE></TD></TR></TABLE>";
      ObjWrite  ('Bulle', Html);
      ObjShowAll('Bulle', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
      bBulle= true;
      return( true);
     }
     return(false);
    }
    //------------------
    function BulleHide(){
      ObjWrite ('Bulle', "&nbsp;");
      ObjHide  ('Bulle');
      ObjMoveTo('Bulle', 0, 0);
      bBulle= false;
      return(true);
    }
    //--------------------
     
     
    function WhereMouse(e){
      if( NETSCAPE){
        Mouse_X = e.pageX;
        Mouse_Y = e.pageY;
      }
      else{
        Mouse_X = event.clientX +document.body.scrollLeft;
        Mouse_Y = event.clientY +document.body.scrollTop;
      }
     
      //-- La bulle est affichée on la MOVE
      if( bBulle)
        ObjShowAll('Bulle', Mouse_X +Decal_X, Mouse_Y +Decal_Y, 1000);
    }
    //== INITIALISATION ==================================
    //-- Capture Souris events ---------------------------
    if( NETSCAPE)
      window.captureEvents( Event.MOUSEMOVE);
    document.onmousemove = WhereMouse;
     
    //-- Création STYLE Bulle et DIV----------------------
    // Nota : pour NS4 le DIV doit faire parti du document
    var Html;
      //-- On met du style pour la bulle
      Html  = '<STYLE TYPE="text/css">';
      Html += '.Bulle{color:#000000;font-size:13px;font-family:Verdana;}';
      Html += '</STYLE>';
      document.write( Html);
     
      //-- Création du DIV Bulle
      if( !NS4){
        Html ='<div id="Bulle" style="position:absolute; left:auto; top:auto; width:auto; height:auto; z-index:0; visibility:hidden"></div>';
        document.write( Html);
      }
    //-- EOF --

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    hello

    j'avais fait ça il y a un moment. regarde comment le positionnement du curseur est géré

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    //tooltip.js
    var tt_posX = 0;
    var tt_posY = 0;
    var tt_yOffset = 15;
    var tt_id;
     
    function tt_getEltById(id)
    {
    	if (document.layers)
    		return document.layers[id];
    	else if (document.all)
    		return document.all[id];
    	else if (document.getElementById)
    		return document.getElementById(id);
     
    	return null;
    }
     
    function tt_over1(msg,classe,duree)
    {
    	var c = (typeof classe=='undefined' ? 'tt_default' : classe);
    	var d = (typeof duree=='undefined' ? 0 : duree);
    	tt_id = setTimeout('tt_show("'+msg+'","'+c+'")',d);
    }
     
    function tt_over2(msg,duree)
    {
    	var d = (typeof duree=='undefined' ? 0 : duree);
    	tt_id = setTimeout('tt_show("'+msg+'","tt_default")',d);
    }
     
    function tt_out()
    {
    	clearTimeout(tt_id);
    	tt_hide();
    }
     
    function tt_show(texte,classe)
    {
    	var contenu = texte;
      var finalPosX = tt_posX;
      if (finalPosX<0) finalPosX=0;
     
      var bulle = tt_getEltById("bulle");
      bulle.className = 'tt_abs ' + (typeof classe == 'undefined' ? 'tt_default' : classe);
     
      if (document.layers)
      {
        bulle.document.write(contenu);
        bulle.document.close();
        bulle.top = tt_posY + tt_yOffset;
        bulle.left= finalPosX;
        bulle.visibility="show";
      }
      else
      {
        bulle.innerHTML = contenu;
        bulle.style.top = tt_posY + tt_yOffset;
        bulle.style.left= finalPosX;
        bulle.style.visibility="visible";
      }
    }
    function tt_getMousePos(e)
    {
     	tt_posX = (document.all ? event.x + document.body.scrollLeft : e.pageX);
     	tt_posY = (document.all ? event.y + document.body.scrollTop : e.pageY);
    }
     
    function tt_hide()
    {
    	if (document.layers)
    		tt_getEltById("bulle").visibility="hide";
    	else
    		tt_getEltById("bulle").style.visibility="hidden";
    }
     
    function tt_init(classe)
    {
    	if (document.layers)
    	{
    		window.captureEvents(Event.MOUSEMOVE);
    		window.onmousemove=tt_getMousePos;
    		document.write("<layer name='bulle' class='tt_abs' style='visibility:hide'></layer>");
    	}
    	else if (document.all || document.getElementById)
    	{
    		document.write("<div id='bulle' class='tt_abs' style='visibility:hidden'></div>");
    		document.onmousemove=tt_getMousePos;
    	}
    }
     
    tt_init();
    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
    //tooltip.css
    /* DEBUT - CSS à conserver */
     
    .tt_abs
    {
    	position: absolute;
    }
     
    .tt_default
    {
    	background-color : white;
    	border : 1px solid black;
    	color : black;
    	padding : 0px 3px 1px 3px;/* top right bottom left */
    	font-family : arial;
    	font-size : 8pt;
    }
     
    /* ajoutez ci-dessous vos CSS */
     
    .tStyle
    {
    	background-color : whitesmoke;
    	border : 1px solid red;
    	color : blue;
    	padding : 0px 3px 1px 3px;/* top right bottom left */
    	font-family : arial;
    	font-size : 8pt;
    }
     
    .secondStyle
    {
    	background-color : green;
    	border : 1px solid black;
    	color : white;
    	padding : 0px 3px 1px 3px;/* top right bottom left */
    	font-family : arial;
    	font-size : 8pt;
    }
    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
    //page html de test
    <html>
    	<head>
    		<title></title>
    		<script language=javascript src="tooltip/tooltip.js"></script>
    		<link href="tooltip/tooltip.css" type=text/css rel=stylesheet>
    </head>
    <body>
    <script language="JavaScript">
    	var msg1 = '<b>1<sup>er</sup> tooltip</b> : <i>className = <u>tStyle</u></i> ';
    	var msg2 = '<b>2<sup>ème</sup> tooltip</b> :<br/>Ici on a laissé le style par défaut et mis<br/>un délai d\'affichage de 0.5 seconde.';
    	var msg3 = '<b>3<sup>ème</sup> tooltip</b> :<br/>Pour ce dernier exemple, seul le message est renseigné';
    </script>
    <span onmouseover="tt_over1(msg1,'tStyle');" onmouseout="tt_out()">message + style perso</span><p>
    <span onmouseover="tt_over2(msg2,500)" onmouseout="tt_out()">message + délai</span><p>
    <span onmouseover="tt_over1(msg3)" onmouseout="tt_out()">message</span><p>
    <span title="tooltip classique : 'attribut title'">pour comparaison : tooltip classique</span>
    </body></html>

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Points : 104
    Points
    104
    Par défaut
    mais comment récupérer la position du curseur sous firefox???

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    comme dans le code ci-dessus

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    juste un détail important : le DOCTYPE utilisé pour la page peut faire que le script "fonctionne" ou pas

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/04/2011, 11h30
  2. Curseur personnalisé sous firefox
    Par domibigoudi dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 13/10/2010, 09h11
  3. background-position-y sous firefox
    Par manuscle dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 29/07/2010, 12h39
  4. Curseur de saisie qui disparait sous firefox mais pas sous IE
    Par s1pike dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/10/2006, 23h58
  5. Position Souris sous Firefox 1.5
    Par nerik38 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/01/2006, 23h31

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