Skip to content

Instantly share code, notes, and snippets.

@branneman
Last active July 7, 2019 10:40
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save branneman/fc66785c082099298955 to your computer and use it in GitHub Desktop.
Save branneman/fc66785c082099298955 to your computer and use it in GitHub Desktop.
getMousePosition(event) - cross browser normalizing of: clientX, clientY, screenX, screenY, offsetX, offsetY, pageX, pageY
/**
* @param {Event} evt
* @return {Object}
*/
function getMousePosition(evt) {
var pageX = evt.pageX;
var pageY = evt.pageY;
if (pageX === undefined) {
pageX = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
pageY = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
var rect = evt.target.getBoundingClientRect();
var offsetX = evt.clientX - rect.left;
var offsetY = evt.clientY - rect.top;
return {
client: { x: evt.clientX, y: evt.clientY }, // relative to the viewport
screen: { x: evt.screenX, y: evt.screenY }, // relative to the physical screen
offset: { x: offsetX, y: offsetY }, // relative to the event target
page: { x: pageX, y: pageY } // relative to the html document
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment