UNPKG

cursor-position

Version:

Simple module for getting the current mouse position in element or window.

103 lines (102 loc) 3.53 kB
"use strict"; 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;