javascript获得当前对象的位置

来源:互联网 发布:餐厅进销存软件 编辑:程序博客网 时间:2024/05/17 06:51
function getElementPos(objOrElementId) {    var ua = navigator.userAgent.toLowerCase();    var isOpera = (ua.indexOf('opera') != -1);    var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof     var el = (typeof objOrElementId == 'string') ? document.getElementById(objOrElementId) : objOrElementId;    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]    };}

原创粉丝点击