Получение положения курсора в холсте без jQuery

Я пытаюсь узнать, как использовать элемент canvas HTML, и, естественно, я делаю приложение для рисования. Итак, у меня есть код, настроенный для фактического рисования и анимации части приложения, но я не уверен, как подойти к позиции курсора мыши. Я бы предпочел не использовать jQuery, потому что я бы предпочел не хотеть узнать все, что он делает, и должен пройти процесс его настройки. Спасибо за любую помощь!

Ответ 1

  function getMousePos(canvas, evt) {
    var rect = canvas.getBoundingClientRect(), root = document.documentElement;

    // return relative mouse position
    var mouseX = evt.clientX - rect.left - root.scrollLeft;
    var mouseY = evt.clientY - rect.top - root.scrollTop;
    return {
      x: mouseX,
      y: mouseY
    };
  }

  window.onload = function() {
    var canvas = document.getElementById('myCanvas');
    var context = canvas.getContext('2d');

    canvas.addEventListener('mousemove', function(evt) {
      var mousePos = getMousePos(canvas, evt);
      var message = "Mouse position: " + mousePos.x + "," + mousePos.y;
      alert(message);
    }, false);
  };

Источник

Ответ 2

При использовании этого для рисования на холсте я предпочитаю этот код:

    function getMousePos(canvas, event)
{
    var mouseX = event.pageX - canvas.offsetLeft;
    var mouseY = event.pageY - canvas.offsetTop;
    return {
        x: mouseX,
        y: mouseY };
}

Это был код, который я использовал, чтобы избежать прокрутки, положения и других проблем, которые я получил с правильной позицией мыши.