cursor-position
Version:
Simple module for getting the current mouse position in element or window.
103 lines (102 loc) • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function isTouchEvent(event) {
if (window.TouchEvent !== undefined) {
return event instanceof TouchEvent;
}
return event.touches !== undefined;
}
var GetCursorPosition = function (opt) {
if (!document)
throw new Error('document is not defined');
if (!window)
throw new Error('window is not defined');
var absolute = true;
var scroll = false;
var x = 0;
var y = 0;
var event = window.event || undefined;
var element = undefined;
if (opt) {
if (opt.event !== undefined)
event = opt.event;
if (opt.absolute !== undefined)
absolute = opt.absolute;
if (opt.scroll !== undefined)
scroll = opt.scroll;
}
if (!event)
throw new Error('event is not defined');
var touches = event.touches;
if (event instanceof MouseEvent) {
x = event.clientX;
y = event.clientY;
}
if (isTouchEvent(event) && touches) {
if (!touches[0]) {
throw new Error('touch is not find');
}
x = touches[0].clientX;
y = touches[0].clientY;
}
if (absolute && scroll) {
x += window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
y += window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
}
else if (!absolute && scroll) {
if (!event.target)
throw new Error('target is not defined');
element = event.target;
if (element instanceof Element && element instanceof HTMLElement) {
x -= element.offsetLeft;
y -= element.offsetTop;
if (element.parentElement) {
var obj = element.parentElement;
while (obj) {
if (obj instanceof HTMLElement) {
x -= obj.offsetLeft;
y -= obj.offsetTop;
if (!obj.parentElement)
break;
obj = obj.parentElement;
}
}
}
if (element.parentElement) {
var obj = element.parentElement;
while (obj) {
if (obj instanceof HTMLElement) {
x += obj.scrollLeft;
y += obj.scrollTop;
if (obj.scrollLeft || obj.scrollTop || !obj.parentElement)
break;
obj = obj.parentElement;
}
}
}
}
}
else if (!absolute && !scroll) {
if (!event.target)
throw new Error('target is not defined');
element = event.target;
if (element instanceof Element && element instanceof HTMLElement) {
x -= element.offsetLeft;
y -= element.offsetTop;
if (element.parentElement) {
var obj = element.parentElement;
while (obj) {
if (obj instanceof HTMLElement) {
x -= obj.offsetLeft;
y -= obj.offsetTop;
if (!obj.parentElement)
break;
obj = obj.parentElement;
}
}
}
}
}
return { x: x, y: y };
};
exports.default = GetCursorPosition;