Самый современный метод определения положения мыши на холсте в нативном JavaScript

Во-первых, я знаю, что этот вопрос задавался много раз. Однако предоставленные ответы не согласуются, и для определения положения мыши используются различные методы. Несколько примеров:

Способ 1:

canvas.onmousemove = function (event) { // this  object refers to canvas object  
Mouse = {
    x: event.pageX - this.offsetLeft,
    y: event.pageY - this.offsetTop
}
}

Способ 2:

function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
  x: evt.clientX - rect.left,
  y: evt.clientY - rect.top
};
}

Способ 3:

var findPos = function(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) { 
    do {
       curleft += obj.offsetLeft;
       curtop += obj.offsetTop; 
    } while (obj = obj.offsetParent);
}
return { x : curleft, y : curtop };
};

Способ 4:

var x;
var y;
if (e.pageX || e.pageY)
{
    x = e.pageX;
    y = e.pageY;
}
else {
    x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; 
} 
x -= gCanvasElement.offsetLeft;
y -= gCanvasElement.offsetTop;

и так далее.

Что меня интересует, так это то, какой метод является самым современным с точки зрения поддержки браузера и удобства в определении положения мыши на холсте. Или это такие вещи, которые имеют незначительное влияние, и любой из вышеперечисленных является хорошим выбором? (Да, я понимаю, что приведенные выше коды не совпадают)

Ответы на вопрос(3)

Ваш ответ на вопрос