Code : Tout sélectionner
function get_initial_position(obj_){
x_initial=0;
y_initial=0;
var Obj = obj_;
//-- Si l'objet existe
if( Obj){
//-- Si propriété existe
if( Obj.offsetParent){
//-- Récup. Position Objet
x_initial = Obj.offsetLeft;
y_initial = Obj.offsetTop;
//-- Tant qu'un parent existe
while( Obj = Obj.offsetParent){
//-- Ajout position Parent
x_initial += Obj.offsetLeft;
y_initial += Obj.offsetTop;
}
}
}
}
function get_position(e)
{
var carte_departement = document.getElementById("carte_departement");
//initial_x = carte_departement.style.left;
x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
x=x-x_initial;
y=y-y_initial;
document.getElementById("positionx").innerHTML = "Abscisse : "+x;
document.getElementById("positiony").innerHTML = "Ordonnee : "+y;
}
Je ne suis pas développeur, rassure-toi. Je suis juste un utilisateur qui développe
On dirait que souvent les anti IE sont les développeurs et non les utilisateurs.
Merci, je l'avais sous le bout de la langue.pour reprendre la discussion, sous IE on utilise .Top, .Left et window.event.x, window.event.y
En fait c'est un peu plus compliqué que ca car la source de l'image est dynamique, l'image est chargée lorsque l'utilisateur saisi un code postal... Bref la fonction get_initial_position(obj_) est appelée lorsque l'image est chargée. Sinon pour layerX et layerY je ne sais pas ce que c'est...Elle est appelée par qui et comment ta fonction get_initial_position(obj_) ?
Et puis, je ne suis pas certain que l'utilisation de pageX et pageY soit aussi pertinente que l'utilisation de layerX et layerY.
Code : Tout sélectionner
function get_position(e){
var DocRef;
//Cas firefox (entre autres)
if( e && e.target){
x = e.pageX;
y = e.pageY;
}
else{
if(document.documentElement && document.documentElement.clientWidth) DocRef = document.documentElement;
else DocRef = document.body;
x = event.clientX +DocRef.scrollLeft-2;
y = event.clientY +DocRef.scrollTop-2;
}
x=x-x_initial;
y=y-y_initial;
document.getElementById("positionx").innerHTML = "Abscisse : "+x;
document.getElementById("positiony").innerHTML = "Ordonnee : "+y;
}Code : Tout sélectionner
/* Je chope l'image */
var tonObjetImage = document.getElementById("carte_departement");
/*
Je lui colle un écouteur d'évènement "move"
*/
tonObjetImage.addEventListener('mousemove', maFonctionCapturante, false) ;
// Ça veut dire : dès que la souris se déplacera sur `tonObjetImage`
// (donc la carte de département), elle appellera la fonction
// `maFonctionCapturante` en lui envoyant les données de l'évènement
// (l'évènement mousemove, en l'occurence)
// Le "false", tu t'en occupes pas, c'est pour que l'évènement poursuive
// sa route, poursuive son chemin, passe le message à ton voisin…
// Ensuite, il suffit de définir ta fonction de capture
// Tu lui donnes bien sûr le nom que tu veux
function maFonctionCapturante ( e ) {
// e contient toutes les infos sur l'évènement move
// Entre autre chose, la cible (target, nom très mal choisi,
// en l'occurence, mais bon…).
// Ici, ta cible, c'est bien sûr la carte des départements, puisqu'il n'y
// a qu'elle qui appelle cette fonction (ton "addEventListener").
// Toujours est-il que tu peux récupérer sa position dans la page :
var posY = e.target.offsetTop ; // traduire pour IE
var posX = e.target.offsetLeft ; // traduire pour IE
// Tu prends les coordonnées de ta souris dans la page
var posMouseX = e.layerX ; // traduire pour IE
var posMouseY = e.layerY ; // traduire pour IE
// Et tu fais ta petite soustraction pour obtenir les coordonnées
// de la souris relativement à la carte des départements :
var posRelativeX = posMouseX - posX ;
var posRelativeY = posMouseY - posY ;
// Et bien sûr, tu l'affiches comme tu l'as fait
}
Rien de tel que d'essayer de comprendre le code pour apprendre, je suis bien d'accord avec toi.mais c'est vrai qu'en général on trouve plus facilement du code que des explications sur le net donc j'essaye de comprendre par le code ce qui n'est pas toujours facile.