ref: ea25b606cbadaf573b71b132c0d2d5081c8516ab
parent: b341d0544de490f40720401fc523b41088d1666b
author: Simon Tatham <anakin@pobox.com>
date: Sun Apr 7 06:24:34 EDT 2013
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]
--- a/emccpre.js
+++ b/emccpre.js
@@ -103,13 +103,11 @@
// 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;
@@ -116,8 +114,17 @@
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.