zoukankan      html  css  js  c++  java
  • 用 Javascript 获取指定页面元素的位置


    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]};

    }
  • 相关阅读:
    cocos: RenderTexture 合并精灵图片
    itms-services 方式安装ipa 无法连接到网址(eg. 我用的ip:172.26.167.82)
    ios 信任自签名证书
    mac 浏览器(chrome, safari)信任自签名证书
    ##ant 打包apk
    #lua中编写shader的方式
    cocos:C++ 导出到lua, cocos2dx_extension.ini修改
    cocos:C++ 导出到lua, genbindings.py修改
    quick如何打开工程或者示例
    quick 中 "我的项目" 中的列表从那里来的?
  • 原文地址:https://www.cnblogs.com/niuniu502/p/778553.html
Copyright © 2011-2022 走看看