@ 2astalavista Je ne peux pas commenter en raison de la réputation, donc je vais mettre ça ici, i » eventhough m pas supposé faire ceci:
J'ai essayé la réponse acceptée, mais cela résout seulement le problème d'autres éléments placés à gauche/au-dessus de la toile. Pour moi, il n'a pas pris en compte la marge de la toile. Je ne sais pas si je l'ai fait correctement cependant. Aussi, je n'aime pas l'idée d'une solution Html face. Quelqu'un change le code HTML, oublie la "position: relative"; résultant en un bug qui est presque impossible à traquer.
J'ai utilisé la solution de Nech, mais j'ai remarqué qu'elle ne fonctionnait pas correctement lorsque j'avais des éléments positionnés à gauche ou au-dessus du canevas. Il ne faut que des éléments comme la marge de la toile.
Je ai travaillé avec le code suivant, la partie de Firefox est toujours seulement environ 99 à 99% de précision, par rapport à la partie Chrome. Mais il fait le travail:
function getEventX(event){
if (event.offsetX) {
return event.offsetX;
}
if (event.clientX) {
var currentElement = event.currentTarget;
var offsetLeft = currentElement.offsetLeft;
while(currentElement.parentElement && currentElement.parentElement.offsetLeft){
currentElement = currentElement.parentElement;
offsetLeft += currentElement.offsetLeft;
}
return event.clientX - offsetLeft;
}
return null;
};
function getEventY(event){
if (event.offsetY) {
return event.offsetY;
}
if (event.clientY) {
var currentElement = event.currentTarget;
var offsetTop = currentElement.offsetTop;
while(currentElement.parentElement && currentElement.parentElement.offsetTop){
currentElement = currentElement.parentElement;
offsetTop += currentElement.offsetTop;
}
return event.clientY - offsetTop;
}
return null;
};
J'ai aussi enlevé la toile d'être remis à la fonction, vous pouvez obtenir la toile avec:
event.currentTarget;
Probablement mieux lors de la manipulation de plusieurs toiles.
HTML 5, «onMouseMove» en ligne _et_ majuscules. Un tel désordre ';)' – Bojangles
Mon premier commentaire est que vous devriez éviter d'utiliser des attributs HTML pour définir les gestionnaires d'événements. Je trouve beaucoup plus de fiabilité avec le javascript pur, peut-être même jeter un peu de jQuery ou Prototype.js là pour le rendre plus facile. –