Merge pull request #432 from nbibler/getPositionUpdate
Replace custom getPosition algorithms with getBoundingClientRect.
This commit is contained in:
commit
5108c4635c
|
@ -433,72 +433,11 @@ Util.load_scripts = function (files) {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// Get DOM element position on page
|
Util.getPosition = function(obj) {
|
||||||
// This solution is based based on http://www.greywyvern.com/?post=331
|
|
||||||
// Thanks to Brian Huisman AKA GreyWyvern!
|
|
||||||
Util.getPosition = (function () {
|
|
||||||
"use strict";
|
"use strict";
|
||||||
function getStyle(obj, styleProp) {
|
var objPosition = obj.getBoundingClientRect();
|
||||||
var y;
|
return {'x': objPosition.left, 'y': objPosition.top};
|
||||||
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};
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
||||||
|
|
||||||
// Get mouse event position in DOM element
|
// Get mouse event position in DOM element
|
||||||
|
|
Loading…
Reference in New Issue