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。もちろん、 が null になるまで を追加してループする必要がoffsetParentありますoffsetTopoffsetParent

jQueryPrototypeの両方がこれを行います。

実際、プロトタイプのコードは次のとおりです。

  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 に答える