您的位置:首页 > 其它

获取控件元素的绝对位置|

2008-12-09 10:29 531 查看
function getElementPos(elementId) {

var ua = navigator.userAgent.toLowerCase();

var isOpera = (ua.indexOf('opera') != -1);

var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

var el = document.getElementById(elementId);

if(el.parentNode === null || el.style.display == 'none') {

return false;

}

var parent = null;

var pos = [];

var box;

if(el.getBoundingClientRect) {

//IE

box = el.getBoundingClientRect();

var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);

var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);

return {x:box.left + scrollLeft, y:box.top + scrollTop};

} else if (document.getBoxObjectFor) {

// gecko

box = document.getBoxObjectFor(el);

var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;

var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;

pos = [box.x - borderLeft, box.y - borderTop];

} else { // safari & opera

pos = [el.offsetLeft, el.offsetTop];

parent = el.offsetParent;

if (parent != el) {

while (parent) {

pos[0] += parent.offsetLeft;

pos[1] += parent.offsetTop;

parent = parent.offsetParent;

}

}

if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) {

pos[0] -= document.body.offsetLeft;

pos[1] -= document.body.offsetTop;

}

}

if (el.parentNode) {

parent = el.parentNode;

} else {

parent = null;

}

while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors

pos[0] -= parent.scrollLeft;

pos[1] -= parent.scrollTop;

if (parent.parentNode) {

parent = parent.parentNode;

} else {

parent = null;

}

}

return {x:pos[0], y:pos[1]};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: