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:
Simon Tatham
2013-04-07 10:24:34 +00:00
parent b341d0544d
commit ea25b606cb

View File

@ -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.