抱歉 - 我的坏 - 另一个脚本中出现错误,让我觉得这个功能有问题。 ** *但是,嘿,如果你需要的话,你有一个很好的功能;)
感谢您的帮助。
!~~
我有这个功能:
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];
}
在页面中查找和元素的实际位置。
但由于某种原因,它在IE中引发了我的错误;如何修复此问题以跨浏览器工作?
答案 0 :(得分:7)
这段独立的代码应该可以在现代浏览器中获得偏移,而不需要框架。它使用getBoundingClientRect
方法:
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};
}
答案 1 :(得分:2)
您可以使用Jquery的offset。