跨浏览器javascript函数,以查找元素在页面中的实际位置 [英] Cross-browser javascript function to find actual position of an element in page

查看:58
本文介绍了跨浏览器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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆