Я задал этот вопрос в 2010 году, но никто, похоже, не удовлетворил его: в чистом javascript нет ответа, который возвращает относительные координаты, когда ссылочный элемент вложен внутри других, который может быть с абсолютным позиционированием. Вот мое решение:
var container = myReferenceElement;
function getRelativeCoordinates ( e ) {
var pos = {}, offset = {}, ref;
ref = container.offsetParent;
pos.x = !! e.touches ? e.touches[ 0 ].pageX : e.pageX;
pos.y = !! e.touches ? e.touches[ 0 ].pageY : e.pageY;
offset.left = container.offsetLeft;
offset.top = container.offsetTop;
while ( ref ) {
offset.left += ref.offsetLeft;
offset.top += ref.offsetTop;
ref = ref.offsetParent;
}
return {
x : pos.x - offset.left,
y : pos.y - offset.top,
};
}