zoukankan      html  css  js  c++  java
  • 根据dom对象或其id获取对象位置的代码

    function getPostionByDom(element)
        {
            var el;
            var ua = navigator.userAgent.toLowerCase();
            var isOpera = (ua.indexOf('opera') != -1);
            var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
            if (typeof element == 'object'){
                el = element;
            }
            else{
                el = document.getElementById(element);
            }
            /*if (typeof el.parentNode == 'undefined' || el.style.display == 'none')
            {
                return false;
            }*/

            var parent = null;
            var pos = [];
            var box;
            if(el.getBoundingClientRect) //IE&FF
            {
                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]};
        }

        window.onload = function() {
            debugger;
            var o = getPostionByDom('SubNav');
        }
  • 相关阅读:
    如何在宿主机上查看kvm虚拟机的IP
    virt-viewer 连kvm 虚机
    用virsh console vhosts 卡住
    sshpass 实现shell脚本直接加载密登录服务器
    maven创建helloword项目
    linux 安装maven
    xz -d Python-3.4.7.tar.xz
    查看哪个用户登录过服务器 记录 时间 和 ip
    两台linux服务器各有两个不同的用户 其中一个服务器可以无密码登录服务器
    maven私服nexus
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2283962.html
Copyright © 2011-2022 走看看