java script 获取对象坐标
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:admin 阅读 405
functiongetElementPos(elementId){varua=navigator.userAgent.toLowerCase()varisOpera=(ua.indexOf('ope

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

}

//sample

var pos=getElementPos("divId");

alert("距左边距离"+ pos.x +",距上边距离"+pos.y);

js获取对象的绝对坐标

function   getAbsPoint(e)  

{  

    var   x   =   e.offsetLeft,   y   =   e.offsetTop;  

    while(e=e.offsetParent)

    {

       x   +=   e.offsetLeft;  

       y   +=   e.offsetTop;

    }

    alert("x:"+x+","+"y:"+y);  

}

方法2:

function   getAbsPoint(obj)  

{  

   var   x,y;  

   oRect   =   obj.getBoundingClientRect();  

x=oRect.left  

y=oRect.top  

alert("("+x+","+y+")")  

}

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2