I have a problem with canvas and handling clicks. It looks that there is no easy way to get a relative coordinate of click inside a given DOM Element. After Googling a little, I've choosen the below solution:
The findRealOffset should be called everytime a position of canvas or layout of website changes.
var totalOffsetX = 0; var totalOffsetY = 0; findRealOffset() { var canvasX = 0; var canvasY = 0; var currentElement = canvas; while (currentElement != null) { totalOffsetX += currentElement.offsetLeft; totalOffsetY += currentElement.offsetTop; currentElement = currentElement.offsetParent; } } relativeCoord(e) { var canvasX = e.pageX - totalOffsetX; var canvasY = e.pageY - totalOffsetY; // Fix for variable canvas width canvasX = ( canvasX * (canvas.width / canvas.offsetWidth) ).round(); canvasY = ( canvasY * (canvas.height / canvas.offsetHeight) ).round(); return {'x':canvasX, 'y':canvasY}; }
Source: http://stackoverflow.com/questions/55677/how-do-i-get-the-coordinates-of-a-mouse-click-on-a-canvas-element