代码之家  ›  专栏  ›  技术社区  ›  Steven

如何使用JavaScript检索IE6中iframe的顶部位置?

  •  1
  • Steven  · 技术社区  · 17 年前

    有人知道如何使用JavaScript检索IE6页面中iframe的顶部位置吗?

    以下代码适用于IE7:window.frames(0).screenTop

    但IE6中的相同代码检索错误的值(太高)。

    有什么想法吗?

    2 回复  |  直到 17 年前
        1
  •  1
  •   bobince    17 年前

    有人知道如何使用JavaScript检索IE6页面中iframe的顶部位置吗?

    与任何其他元素相同,使用offsetTop(并从任何offsetParent祖先中添加offsetTop)。它是一个<iframe>元素并不重要。

    var el= document.getElementsByTagName('iframe')[0];
    var top= 0;
    while (el && el.nodeType==1 && el!==document.documentElement) {
        top+= el.offsetTop;
        el= el.offsetParent;
    }
    

    以下代码适用于IE7:window.frames(0).screenTop

    我怀疑这行得通。屏幕顶端是错误的,是屏幕上的坐标不在页面上。无论如何,它必须是方括号。

        2
  •  0
  •   geowa4    17 年前

    你可能想用 offsetTop . 当然,您必须循环,添加 offsetParent 抵消 直到 抵销母公司 为空。

    两者 jQuery Prototype 为你做这个。

    实际上,这是Prototype的代码:

      positionedOffset: function(element) {
        var valueT = 0, valueL = 0;
        do {
          valueT += element.offsetTop  || 0;
          valueL += element.offsetLeft || 0;
          element = element.offsetParent;
          if (element) {
            if (element.tagName.toUpperCase() == 'BODY') break;
            var p = Element.getStyle(element, 'position');
            if (p !== 'static') break;
          }
        } while (element);
        return Element._returnOffset(valueL, valueT);
      }
      //Element.getStyle returns the style or its default if not defined.
      //Element._returnOffset returns the left and top as a single object