2010-12-02 19 views
7

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

例: IE7では

  • IE8 = 204で= 205
  • のFirefox 3.6では$('#anchorid').offset().top

    • = 553

    あなたは各返された値の差を見ることができるように。私はFF & IE8の違いにあまり気をつけていませんが、私はIE7などと一緒にいます。

    同じまたは類似のクロスブラウザまたはこれに対応する可能性がある別の機能がありますか?

  • +3

    サンプルページがありますか?それは*方法*オフです。 –

    答えて

    10

    マークアップに間違いがあります(クロスブラウザではない)。しかし代わりに、ネイティブのjavascriptを代わりに使用してみることもできます。私のスクリプトが要素ページにロードされたとき、私はIE8でこの問題を取得

    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}; 
    } 
    
    +0

    ご協力ありがとうございます – amateur

    0

    :あなたはページ全体にオフセットを取得したい場合のように、関数を使用することができますの

    document.getElementById('anchorid').offsetTop 
    

    私たちはoffset().topを取得したいということは存在しません。

    私はこのようにそれを解決:要素が存在しない場合は

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

    offset().topを実行することはありません。

    関連する問題