Browse Source

Merge pull request #432 from nbibler/getPositionUpdate

Replace custom getPosition algorithms with getBoundingClientRect.
Solly 10 years ago
parent
commit
5108c4635c
1 changed files with 4 additions and 65 deletions
  1. 4 65
      include/util.js

+ 4 - 65
include/util.js

@@ -433,72 +433,11 @@ Util.load_scripts = function (files) {
 };
 
 
-// Get DOM element position on page
-//  This solution is based based on http://www.greywyvern.com/?post=331
-//  Thanks to Brian Huisman AKA GreyWyvern!
-Util.getPosition = (function () {
+Util.getPosition = function(obj) {
     "use strict";
-    function getStyle(obj, styleProp) {
-        var y;
-        if (obj.currentStyle) {
-            y = obj.currentStyle[styleProp];
-        } else if (window.getComputedStyle)
-            y = window.getComputedStyle(obj, null)[styleProp];
-        return y;
-    }
-
-    function scrollDist() {
-        var myScrollTop = 0, myScrollLeft = 0;
-        var html = document.getElementsByTagName('html')[0];
-
-        // get the scrollTop part
-        if (html.scrollTop && document.documentElement.scrollTop) {
-            myScrollTop = html.scrollTop;
-        } else if (html.scrollTop || document.documentElement.scrollTop) {
-            myScrollTop = html.scrollTop + document.documentElement.scrollTop;
-        } else if (document.body.scrollTop) {
-            myScrollTop = document.body.scrollTop;
-        } else {
-            myScrollTop = 0;
-        }
-
-        // get the scrollLeft part
-        if (html.scrollLeft && document.documentElement.scrollLeft) {
-            myScrollLeft = html.scrollLeft;
-        } else if (html.scrollLeft || document.documentElement.scrollLeft) {
-            myScrollLeft = html.scrollLeft + document.documentElement.scrollLeft;
-        } else if (document.body.scrollLeft) {
-            myScrollLeft = document.body.scrollLeft;
-        } else {
-            myScrollLeft = 0;
-        }
-
-        return [myScrollLeft, myScrollTop];
-    }
-
-    return function (obj) {
-        var curleft = 0, curtop = 0, scr = obj, fixed = false;
-        while ((scr = scr.parentNode) && scr != document.body) {
-            curleft -= scr.scrollLeft || 0;
-            curtop -= scr.scrollTop || 0;
-            if (getStyle(scr, "position") == "fixed") {
-                fixed = true;
-            }
-        }
-        if (fixed && !window.opera) {
-            var scrDist = scrollDist();
-            curleft += scrDist[0];
-            curtop += scrDist[1];
-        }
-
-        do {
-            curleft += obj.offsetLeft;
-            curtop += obj.offsetTop;
-        } while ((obj = obj.offsetParent));
-
-        return {'x': curleft, 'y': curtop};
-    };
-})();
+    var objPosition = obj.getBoundingClientRect();
+    return {'x': objPosition.left, 'y': objPosition.top};
+};
 
 
 // Get mouse event position in DOM element