summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolly <directxman12+github@gmail.com>2015-02-17 15:59:27 -0500
committerSolly <directxman12+github@gmail.com>2015-02-17 15:59:27 -0500
commit5108c4635c847de9be0edadf572f7426f351b66a (patch)
tree19f37bab388cfe24ff5b0068334d21ed53867ac2
parentdedf9affbf708aa678e8e3ae94049f8bda9a9470 (diff)
parent455f8f3fd0d3296cd3590fe354dd811ed755565c (diff)
downloadnovnc-5108c4635c847de9be0edadf572f7426f351b66a.tar.gz
Merge pull request #432 from nbibler/getPositionUpdate
Replace custom getPosition algorithms with getBoundingClientRect.
-rw-r--r--include/util.js69
1 files changed, 4 insertions, 65 deletions
diff --git a/include/util.js b/include/util.js
index 909d04b..482b10c 100644
--- a/include/util.js
+++ b/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