Обработка события OnClick для холста в javascript и получение его координат

У меня есть холст для рисования, подобный этому

<div id="canvas" style="position:relative;width:600px;height:300px;" onclick="q()"></div>

Мне нужно обработать событие при нажатии на него и получить координаты на холсте, где он был нажат

Ответы

Ответ 1

Вам нужно получить координаты страницы x и y, а затем минус смещение canvas, чтобы получить их относительно canvas.

function q(event) {
    event = event || window.event;

    var canvas = document.getElementById('canvas'),
        x = event.pageX - canvas.offsetLeft,
        y = event.pageY - canvas.offsetTop;

    alert(x + ' ' + y);
}

jsFiddle.

Вы должны учитывать привязку событий ненавязчиво, т.е. не используя атрибут onclick HTML.

Ответ 3

Начиная с HTML5, просто получите атрибуты layerX и layerY самого события. Ницца!