• 获取元素的页面位置,兼容各浏览器


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
    <div id="test"></div>
        <script>
            /**
            *获取页面元素的滚动位置
            @param {DOM} el Dom元素
            *return {Object} 元素滚动位置对象
            */
            function getScroll (el) {
                var d = el,
                    doc = document,
                    body = doc.body,
                    docElement = doc.documentElement,
                    l,
                    t,
                    ret,
                    isStrict = document.compatMode == "CSS1Compat",
                    isIE = /msie/.test(navigator.userAgent);
    
                if (d == doc || d == body) {
                    if (isIE && isStrict) {
                        l = docElement.scrollLeft;
                        t = docElement.scrollTop;
                    } else {
                        l = window.pageXOffset;
                        t = window.pageYOffset;
                    }
                    ret = {
                        left: l || (body ? body.scrollLeft : 0),
                        top: t || (body ? body.scrollTop : 0)
                    };
                } else {
                    ret = {
                        left: d.scrollLeft,
                        top: d.scrollTop
                    };
                }
    
                return ret;
            }
            /**
            *获取页面元素的位置
            @param {DOM} el Dom元素
            *return {Object} 元素位置对象
            */
            function getXY (el) {
                var doc = document, bd = doc.body,
                    docEl = doc.documentElement,
                    leftBorder = 0,
                    topBorder = 0,
                    ret = [0, 0],
                    round = Math.round,
                    box,
                    scroll,
                    isIE = /msie/.test(navigator.userAgent);
    
    
                if (el != doc && el != bd) {
                    if (isIE) {
                        try {
                            box = el.getBoundingClientRect();
                            // 在ie8之前版本,  documentElement 元素会有两像素的边框, 所以要减去它
                            topBorder = docEl.clientTop || bd.clientTop;
                            leftBorder = docEl.clientLeft || bd.clientLeft;
                        } catch (ex) {
                            box = { left: 0, top: 0 };
                        }
                    } else {
                        box = el.getBoundingClientRect();
                    }
    
                    scroll = getScroll(document);
                    ret = [round(box.left + scroll.left - leftBorder), round(box.top + scroll.top - topBorder)];
                }
                return ret;
            }
            var div = document.getElementById("test");
            var sc = getXY(div);
            console.log(sc);
        </script>
    </body>
    </html>
  • 相关阅读:
    资料链接韦东山和尚观
    资源共享
    总结
    针对piix4_smbus ****host smbus controller not enabled的解决方法
    详解为什么32位系统只能用4G内存.
    在Server 2008下架设FTP服务器
    C面试题
    删除所有的.svn文件夹
    C语言宏定义技巧
    简单的重复登录控制(java版)
  • 原文地址:https://www.cnblogs.com/webjs/p/2722393.html
Copyright © 2020-2023  润新知