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

          文章來(lái)源:http://www.cnblogs.com/wangdetian168/archive/2008/12/09/1350905.html
          posted on 2010-10-11 09:27 sanmao 閱讀(145) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 镇原县| 舞钢市| 彭泽县| 云安县| 瑞昌市| 永登县| 延吉市| 东平县| 大同市| 余江县| 紫金县| 麻栗坡县| 靖宇县| 凤城市| 崇义县| 新巴尔虎左旗| 新昌县| 图们市| 滦南县| 吉林省| 黔西| 海门市| 伊宁县| 罗平县| 上杭县| 乌拉特中旗| 深水埗区| 黎平县| 长岭县| 洛隆县| 抚松县| 开平市| 焉耆| 徐闻县| 安平县| 勃利县| 广丰县| 新龙县| 措勤县| 江油市| 施秉县|