0
請參閱以下fiddle。如果在不同的子元素上移動,MouseEvent.offsetX/Y將重置爲0
它包含一個帶有3個子div的父div。點擊後偵聽器附加到父DIV和應該拋出警報相對於父DIV鼠標位置:
const parent = document.getElementById('main');
parent.addEventListener('click', handleMouseClick);
function handleMouseClick(e) {
alert(e.offsetX, e.offsetY);
}
我期待什麼:點擊任何孩子的div以及相對於點擊位置得到父div(#main)。
實際情況:偏移X/Y總是等於相對於我點擊的孩子的點擊位置。
爲什麼會發生這種情況?我該如何解決它?是否有另一種方式來獲得相對於父div的鼠標位置,並考慮到潛在的滾動?
這一切正常。謝謝! – Nimelrian
更正,如果偵聽器本身的目標未位於(0; 0)處,則不起作用。我不得不減去父rect的位置來使它工作:'alert(\'$ {e.offsetX + child.left-parentRect.left} $ {e.offsetY + child.top-parentRect.top} \'); '。如果你把這個添加到你的答案中,我會重新接受它。 – Nimelrian