30 lines
850 B
JavaScript
Executable file
30 lines
850 B
JavaScript
Executable file
|
|
function getCoords(elem) {
|
|
var box = elem.getBoundingClientRect();
|
|
|
|
var body = document.body;
|
|
var docElem = document.documentElement;
|
|
|
|
var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
|
|
var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
|
|
|
|
var clientTop = docElem.clientTop || body.clientTop || 0;
|
|
var clientLeft = docElem.clientLeft || body.clientLeft || 0;
|
|
|
|
var top = box.top + scrollTop - clientTop;
|
|
var left = box.left + scrollLeft - clientLeft;
|
|
|
|
return { top: Math.round(top), left: Math.round(left) };
|
|
}
|
|
|
|
function getElementUnderClientXY(elem, clientX, clientY) {
|
|
var display = elem.style.display || '';
|
|
elem.style.display = 'none';
|
|
|
|
var target = document.elementFromPoint(clientX, clientY);
|
|
|
|
elem.style.display = display;
|
|
|
|
return target;
|
|
}
|
|
|