7

offset()jQueryの関数でクロスブラウザの問題が発生しています。たとえば、アンカータグのオフセットを探しています

例えば。$('#anchorid').offset().top

  • Firefox3.6の場合=205
  • IE8の場合=204
  • IE7の場合=553

ご覧のとおり、各戻り値の違いがわかります。FFとIE8の違いはあまり気になりませんが、IE7などは気になります。

同じまたは類似のクロスブラウザまたはこれに対する可能な修正である、私が使用できる別の機能はありますか?

4

2 に答える 2

10

マークアップに何か問題がある(クロスブラウザではない)可能性があります。ただし、別の方法として、代わりにネイティブJavaScriptを使用してみることができます。

document.getElementById('anchorid').offsetTop

ページ全体のオフセットを取得したい場合は、次のような関数を使用できます。

function findTotalOffset(obj) {
  var ol = ot = 0;
  if (obj.offsetParent) {
    do {
      ol += obj.offsetLeft;
      ot += obj.offsetTop;
    }while (obj = obj.offsetParent);
  }
  return {left : ol, top : ot};
}
于 2010-12-02T13:32:14.810 に答える
0

IE8で、取得したい要素がoffset().top存在しないページにスクリプトをロードすると、この問題が発生します。

私はそれを次のように解決しました:

if ($('#element').length){
    $('#element').offset().top // ...
}

offset().top要素が存在しない場合は実行しないでください。

于 2013-08-31T13:24:52.000 に答える