跨浏览器javascript函数,以查找元素在页面中的实际位置 [英] Cross-browser javascript function to find actual position of an element in page
本文介绍了跨浏览器javascript函数,以查找元素在页面中的实际位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
抱歉-我的坏-另一个脚本中出现错误,使我认为此功能有问题. ** *但是,如果您需要一个功能,您将拥有一个不错的功能;)
SORRY - MY BAD - There was error in another script that made me think this function is buggy. ** * but hey, you've got a nice function if you need one ;)
感谢帮助人员.
!~~
我有这个功能:
function findPos(obj) {
var curleft = curtop = 0;
if (obj && obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return [curleft,curtop];
}
查找元素在页面中的实际位置.
to find and element's actual position in page.
但是由于某种原因,它使我在IE中出现错误;如何解决此问题才能跨浏览器工作?
But for some reason, it throws me an error in IE; how do I fix this to work cross-browser?
推荐答案
这段独立的代码应该为您提供没有框架的现代浏览器的补偿.它使用 getBoundingClientRect
方法:
This independent piece of code should get you the offset in modern browsers, without frameworks. It uses the getBoundingClientRect
method:
function offset(element){
var body = document.body,
win = document.defaultView,
docElem = document.documentElement,
box = document.createElement('div');
box.style.paddingLeft = box.style.width = "1px";
body.appendChild(box);
var isBoxModel = box.offsetWidth == 2;
body.removeChild(box);
box = element.getBoundingClientRect();
var clientTop = docElem.clientTop || body.clientTop || 0,
clientLeft = docElem.clientLeft || body.clientLeft || 0,
scrollTop = win.pageYOffset || isBoxModel && docElem.scrollTop || body.scrollTop,
scrollLeft = win.pageXOffset || isBoxModel && docElem.scrollLeft || body.scrollLeft;
return {
top : box.top + scrollTop - clientTop,
left: box.left + scrollLeft - clientLeft};
}
这篇关于跨浏览器javascript函数,以查找元素在页面中的实际位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文