1

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

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

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

有任何想法吗?

4

2 回答 2

1

有谁知道如何使用 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

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

于 2009-02-09T14:46:49.880 回答
0

您可能希望使用offsetTop. 当然,您必须循环,添加offsetParent'offsetTop直到offsetParent为空。

jQueryPrototype 都可以为你做这件事。

事实上,这是 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
于 2009-02-09T14:10:33.413 回答