Coordonnées du curseur dans FF...

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Lisaraël
Salamandre
Messages : 20
Inscription : 05 mars 2005, 13:00

Coordonnées du curseur dans FF...

Message par Lisaraël »

Bonsoir.

Je travaille actuellement sur un javascript qui, en cas de double click dans la page, affiche un petit menu (genre menu du click droit), où l'on a accès à diverses propriétés sympa.

Tout vas pour le mieux, sauf un truc. J'aimerai que, lorsque ce menu apparait (c'est une div en position absolute), il se positionne automatiquement au niveau du curseur de la souris, comme un "vrai" menu contextuel.

je pensais à un truc du style

Code : Tout sélectionner

menu.style.top = clientX + "px";
, mais ça ne marche pas.

Le problème vient de la détection des coordonnées des curseurs, car quand je rentre un nombre fixe et prédéfini, mon menu se place là où il doit se mettre.

Merci bcp.
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

Il te faut stocker la position du curseur souris dans 2 variables globales que tu déclares dans le <head></head>

Code : Tout sélectionner

var bGch=0;
var bTop=0;
puis initialiser le gestionnaire d'évènements juste après le <body> via un truc du type

Code : Tout sélectionner

  document.onmousemove=getMousePos;
où la fonction getMousePos vaut...

Code : Tout sélectionner

function getMousePos(e) {
  if (document.all) {
    bGch=event.x+document.body.scrollLeft;
    bTop=event.y+document.body.scrollTop;
  }
  else {
    bGch=e.pageX; 
    bTop=e.pageY; 
  }
}
Désolé pour le test du navigateur avec document.all... je n'ai pas cherché à améliorer le script (temps, envie...)... Si qq veut se lancer !...

Tous les détails ici, et plus spécialement .
Bienheureux les fêlés car ils laissent passer la lumière...
Lisaraël
Salamandre
Messages : 20
Inscription : 05 mars 2005, 13:00

Message par Lisaraël »

Merci bcp, c'est impec'.

Bonne journée.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Voilà:

Code : Tout sélectionner

function getMousePos(e) {
  if( !e ) e = window.event;

  var root  = document.documentElement || document.body;
  var bGch = e.clientX + root.scrollLeft;
  var bTop = e.clientY + root.scrollTop;
  
  if( typeof(e.pageX) != 'undefined' )
  {
     var bugSafari = (e.pageX == e.clientX && root.scrollLeft > 0);
     bugSafari = bugSafari || (e.pageY == e.clientY && root.scrollTop > 0);
     
     if( bugSafari )
     {
         bGch = e.clientX;
         bTop = e.clientY;
     }
  }
}
Un peu long à cause d'un bug de Safari à esquiver.
J'ai pas testé ce code mais c'est ok normalement.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Lisaraël
Salamandre
Messages : 20
Inscription : 05 mars 2005, 13:00

Message par Lisaraël »

merci beaucoup, ça pourra être utile, mais en fait, c'est actuellement un script de travail pour l'école, il ne sera contrôlé que sous Firefox... voire IE, mais je doute.

en tout cas, merci, si je ré-utilise ce script après, je n'oublierai pas cette correction...
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités