Mastronic
Messages postés94Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention13 juin 2012
-
17 déc. 2006 à 12:13
Mastronic
Messages postés94Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention13 juin 2012
-
19 déc. 2006 à 01:42
Bonjour,
j'ai un script qui fonctionne tres bien sous Internet Explorateur mais pas sur FireFox.
je n'arrive pas à recupérer les coordonnées quand je clique sur une image sous FF.
j'essaye par moi meme de resoudre le probleme mais je n'y arrive pas. (encore debutant dans la matiere)
je vous joins le code allégé avec affichage des coordonnées.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 18 déc. 2006 à 18:02
B
onjour...
une solution consiste à mettre un événement sur le mousemove du document par exemple
document.onmousemove = WhereMouse;
cette fonction mets dans des variables globales la position de la souris, ici Mouse_X et Mouse_Y...
//--------------------
function WhereMouse(e){
var DocRef;
//-- On traque les hybrides
if( e && e.target){
Mouse_X = e.pageX;
Mouse_Y = e.pageY;
}
else{
if( document.documentElement && document.documentElement.clientWidth)
DocRef = document.documentElement;
else
DocRef = document.body;
ceci étant tu récupéres la position de la souris quelque soit la position dans la page scrollée ou non.
maintenant il te faut récupérer la position de l'objet cliquer...
pour cela, et d'après ce que je vois il te faut une fonction absolue, l'image peut être impriquée
//----------------------
function ObjGetPos(obj_){
var PosX = 0;
var PosY = 0;
var Obj = obj_;
//-- Si l'objet existe
if( Obj){
//-- Si propriété existe
if( Obj.offsetParent){
//-- Récup. Position Objet
PosX = Obj.offsetLeft;
PosY = Obj.offsetTop;
//-- Tant qu'un parent existe
while( Obj = Obj.offsetParent){
//-- Ajout position Parent
PosX += Obj.offsetLeft;
PosY += Obj.offsetTop;
}
}
}
//-- Retour des positions
return([PosX, PosY]);
}
cette fonction remonte donc au body pour récupérer la position absolute de l'objet...
son appel peut se fait de la façon suivante
//--------------------------------
function Afficher_Position( this_){
var Pos =new Array();
Pos =
Sous IE, cela fonctionne, mais sous FF (FireFox) les coordonnées ne prenne pas en compte le decallage de l'image par rapport au bord de la fenetre de l'explorateur..
Comment faire?
Si non peut tu m'expliqué dans ton code (ci dessous) qui est compatible et avec quoi ?
if (!e){
e = window.event;
}
if (!e.layerX){
e.layerX = e.offsetX;
e.layerY = e.offsetY;
}
car je veux pour mon scripte obtenir deux couples de coordonnées..
Cordonnée de l'image ( origine en haut à gauche de l'image)
et ceux pour effectué des taches sur l'image.. ( decoupe, ajoue de texte )
Cordonnée de la fenetre de l'explorateur ( origine en haut à gauche de la fenétre)
et ceux pour afficher un cadre en supperposition sur l'image.
D'avance merci, et Merci pour avoir pris le temps de repondre.
Mastronic
Messages postés94Date d'inscriptionlundi 8 août 2005StatutMembreDernière intervention13 juin 2012 19 déc. 2006 à 01:42
Merci d'avoir pris le temps de repondre.
Merci 653783 PetoleTeam: Toujours des réponses de qualitées. Je crois que ce post va servir à pas mal de personnes. Oui, j'avais déja lue le tutoriaux et je ne sais pas pourquoi je n'est pas pris cette solution efficace de suite..
je viens d'adapter mon script, ca fonctionne tres bien sur FF et IE.
Pour la fonction ObjGetPos() c une tres bonne technique la boucle permettant de calculé tous les offset.
J'ai remarqué sous IE V6.0, il existe un décallage de 2 pixels, en X comme en Y... (je l'avais déja remarqué avec mon script).
je ne sais pas si cela s'applique à tous les navigateurs Internet Explorateur
j'ai donc soustrait deux au variables Mouse:
Mouse_X = event.clientX +DocRef.scrollLeft-2;
Mouse_Y = event.clientY +DocRef.scrollTop-2;