mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
Small refactor to relative_mouse_coords: now the functionality which
returns an element's absolute position on the web page is split out into a subfunction that can be called directly. [originally from svn r9819]
This commit is contained in:
25
emccpre.js
25
emccpre.js
@ -103,21 +103,28 @@ var permalink_seed, permalink_desc;
|
||||
// The undo and redo buttons. Used by js_enable_undo_redo().
|
||||
var undo_button, redo_button;
|
||||
|
||||
// Helper function which is passed a mouse event object and a DOM
|
||||
// element, and returns the coordinates of the mouse event relative to
|
||||
// the top left corner of the element by iterating upwards through the
|
||||
// DOM finding each element's offset from its parent, and thus
|
||||
// calculating the page-relative position of the target element so
|
||||
// that we can subtract that from event.page{X,Y}.
|
||||
function relative_mouse_coords(event, element) {
|
||||
// Helper function to find the absolute position of a given DOM
|
||||
// element on a page, by iterating upwards through the DOM finding
|
||||
// each element's offset from its parent, and thus calculating the
|
||||
// page-relative position of the target element.
|
||||
function element_coords(element) {
|
||||
var ex = 0, ey = 0;
|
||||
while (element.offsetParent) {
|
||||
ex += element.offsetLeft;
|
||||
ey += element.offsetTop;
|
||||
element = element.offsetParent;
|
||||
}
|
||||
return {x: event.pageX - ex,
|
||||
y: event.pageY - ey};
|
||||
return {x: ex, y:ey};
|
||||
}
|
||||
|
||||
// Helper function which is passed a mouse event object and a DOM
|
||||
// element, and returns the coordinates of the mouse event relative to
|
||||
// the top left corner of the element by subtracting element_coords
|
||||
// from event.page{X,Y}.
|
||||
function relative_mouse_coords(event, element) {
|
||||
var ecoords = element_coords(element);
|
||||
return {x: event.pageX - ecoords.x,
|
||||
y: event.pageY - ecoords.y};
|
||||
}
|
||||
|
||||
// Init function called from body.onload.
|
||||
|
Reference in New Issue
Block a user