1. 程式人生 > >獲取頁面元素位置

獲取頁面元素位置

在Web程式設計中,常常會使用某個元素的位置,即相對於整個螢幕左上方的位置。

這裡有一個較好的方法實現。

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 functiongetElementPos(elementId){varua=navigator.userAgent.toLowerCase();varisOpera=(ua.indexOf('opera')!=-1);varisIE=(ua.indexOf('msie')!=-1&&
!isOpera);//notoperaspoofvarel=document.getElementById(elementId);if(el.parentNode===null||el.style.display=='none'){returnfalse;}varparent=null;varpos=[];varbox;if(el.getBoundingClientRect)//IE{box=el.getBoundingClientRect();varscrollTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop)
;varscrollLeft=Math.max(document.documentElement.scrollLeft,document.body.scrollLeft);//alert(box.left+scrollLeft);return{x:box.left+scrollLeft,y:box.top+scrollTop};}elseif(document.getBoxObjectFor)//gecko{box=document.getBoxObjectFor(el);varborderLeft=(el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;varborderTop=(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'){//accountforanyscrolledancestorspos[0]-=parent.scrollLeft;pos[1]-=parent.scrollTop;if(parent.parentNode){parent=parent.parentNode;}else{parent=null;}}return{x:pos[0],y:pos[1]};}