Skip to content

Instantly share code, notes, and snippets.

@mrdoob
Created December 9, 2012 23:22
Show Gist options
  • Select an option

  • Save mrdoob/4247472 to your computer and use it in GitHub Desktop.

Select an option

Save mrdoob/4247472 to your computer and use it in GitHub Desktop.
Is it possible to have event.offsetX always relative to the element with the listener?
/*
* +--------------------+
* | element1 |
* | +----------+ |
* | | element2 | |
* | +----------+ |
* +--------------------+
*
* (element2 is a child of element1)
*
* Is it possible to have event.offsetX
* always relative to element1 regardless of
* whether element1 or element2 is clicked?
*
*/
element1.addEventListener( 'click', function ( event ) {
console.log( event.offsetX );
}, false );
// I would like to stop using this workaround...
element1.addEventListener( 'click', function ( event ) {
var offsetX = event.offsetX;
var node = event.target;
while ( node !== this ) {
offsetX += node.offsetLeft;
node = node.parentNode;
}
console.log( offsetX );
}, false );
@mrdoob
Copy link
Copy Markdown
Author

mrdoob commented Dec 10, 2012

Meh... event.x is undefined in Firefox :(

@SCRWD
Copy link
Copy Markdown

SCRWD commented Dec 10, 2012

what about something like:

console.log( (event.clientX + document.documentElement.scrollLeft) || (event.x + this.scrollLeft) );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment