X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=27196d8c22ea90efcbd5beca7b42bd0ccef3aa7a;hb=8442269f2a0a809ece4bf150d61ed8a15bf84788;hp=b5521c4912d2270f9ce074d84c7e994770110c27;hpb=738a62ba76b5b59e92fe74230fa520fb50b1b1c5;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index b5521c4..27196d8 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -173,35 +173,57 @@ Dygraph.hsvToRGB = function (hue, saturation, value) { // http://blog.firetree.net/2005/07/04/javascript-find-position/ // http://www.quirksmode.org/js/findpos.html -/** @private */ +/** + * Find the x-coordinate of the supplied object relative to the left side + * of the page. + * @private + */ Dygraph.findPosX = function(obj) { var curleft = 0; - if(obj.offsetParent) - while(1) - { - curleft += obj.offsetLeft; - if(!obj.offsetParent) + if(obj.offsetParent) { + var copyObj = obj; + while(1) { + curleft += copyObj.offsetLeft; + if(!copyObj.offsetParent) { break; - obj = obj.offsetParent; + } + copyObj = copyObj.offsetParent; } - else if(obj.x) + } else if(obj.x) { curleft += obj.x; + } + // This handles the case where the object is inside a scrolled div. + while(obj && obj != document.body) { + curleft -= obj.scrollLeft; + obj = obj.parentNode; + } return curleft; }; -/** @private */ +/** + * Find the y-coordinate of the supplied object relative to the top of the + * page. + * @private + */ Dygraph.findPosY = function(obj) { var curtop = 0; - if(obj.offsetParent) - while(1) - { - curtop += obj.offsetTop; - if(!obj.offsetParent) + if(obj.offsetParent) { + var copyObj = obj; + while(1) { + curtop += copyObj.offsetTop; + if(!copyObj.offsetParent) { break; - obj = obj.offsetParent; + } + copyObj = copyObj.offsetParent; } - else if(obj.y) + } else if(obj.y) { curtop += obj.y; + } + // This handles the case where the object is inside a scrolled div. + while(obj && obj != document.body) { + curtop -= obj.scrollTop; + obj = obj.parentNode; + } return curtop; };