X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=src%2Fdygraph-utils.js;h=44ad0cf7d3b5abf571c0b36d0a30ab245cb9308c;hb=4debe18e145f45f09788f3ba6af800536818efa8;hp=eb08fef51e97817cb2b984a8765112cd7a082c59;hpb=07cae5dd0adbcee97689ffa6099a6b0e8665011b;p=dygraphs.git diff --git a/src/dygraph-utils.js b/src/dygraph-utils.js index eb08fef..44ad0cf 100644 --- a/src/dygraph-utils.js +++ b/src/dygraph-utils.js @@ -166,50 +166,22 @@ Dygraph.hsvToRGB = function (hue, saturation, value) { return 'rgb(' + red + ',' + green + ',' + blue + ')'; }; -// The following functions are from quirksmode.org with a modification for Safari from -// http://blog.firetree.net/2005/07/04/javascript-find-position/ -// http://www.quirksmode.org/js/findpos.html -// ... and modifications to support scrolling divs. - /** * Find the coordinates of an object relative to the top left of the page. * - * TODO(danvk): change obj type from Node -> !Node * @param {Node} obj * @return {{x:number,y:number}} * @private */ Dygraph.findPos = function(obj) { - var curleft = 0, curtop = 0; - if (obj.offsetParent) { - var copyObj = obj; - while (1) { - var borderLeft = "0", borderTop = "0"; - var computedStyle = window.getComputedStyle(copyObj, null); - borderLeft = computedStyle.borderLeft || "0"; - borderTop = computedStyle.borderTop || "0"; - curleft += parseInt(borderLeft, 10) ; - curtop += parseInt(borderTop, 10) ; - curleft += copyObj.offsetLeft; - curtop += copyObj.offsetTop; - if (!copyObj.offsetParent) { - break; - } - copyObj = copyObj.offsetParent; - } - } else { - // TODO(danvk): why would obj ever have these properties? - if (obj.x) curleft += obj.x; - if (obj.y) curtop += obj.y; - } + var p = obj.getBoundingClientRect(), + w = window, + d = document.documentElement; - // This handles the case where the object is inside a scrolled div. - while (obj && obj != document.body) { - curleft -= obj.scrollLeft; - curtop -= obj.scrollTop; - obj = obj.parentNode; + return { + x: p.left + (w.pageXOffset || d.scrollLeft) - (d.clientLeft || 0), + y: p.top + (w.pageYOffset || d.scrollTop) - (d.clientTop || 0) } - return {x: curleft, y: curtop}; }; /** @@ -221,15 +193,7 @@ Dygraph.findPos = function(obj) { * @private */ Dygraph.pageX = function(e) { - if (e.pageX) { - return (!e.pageX || e.pageX < 0) ? 0 : e.pageX; - } else { - var de = document.documentElement; - var b = document.body; - return e.clientX + - (de.scrollLeft || b.scrollLeft) - - (de.clientLeft || 0); - } + return (!e.pageX || e.pageX < 0) ? 0 : e.pageX; }; /** @@ -241,15 +205,7 @@ Dygraph.pageX = function(e) { * @private */ Dygraph.pageY = function(e) { - if (e.pageY) { - return (!e.pageY || e.pageY < 0) ? 0 : e.pageY; - } else { - var de = document.documentElement; - var b = document.body; - return e.clientY + - (de.scrollTop || b.scrollTop) - - (de.clientTop || 0); - } + return (!e.pageY || e.pageY < 0) ? 0 : e.pageY; }; /**