2010-12-02 14 views
7

Ich habe ein Cross-Browser-Problem mit der offset()-Funktion in jQuery. Zum Beispiel suche ich nach dem Offset einer AnkermarkeCross-Browser-Problem mit Offset() jquery Funktion

zB. $('#anchorid').offset().top

  • In Firefox 3,6 = 205
  • In IE8 = 204
  • In IE7 = 553

Wie Sie den Unterschied in jedem zurückgegebenen Wert sehen. Ich bin nicht sehr besorgt über den Unterschied zwischen FF & IE8, aber ich bin mit IE7 und den anderen.

Gibt es eine andere Funktion, die ich verwenden könnte, dass die gleichen oder ähnliche cross-Browser oder eine mögliche Lösung dafür wäre?

+3

Haben Sie eine Beispielseite? Das ist * weg *. –

Antwort

10

Die Wahrscheinlichkeit, dass etwas falsch (nicht-Crossbrowser) mit Ihrem Markup ist. Aber als Alternative könnten Sie versuchen, stattdessen natives Javascript zu verwenden.

document.getElementById('anchorid').offsetTop 

Of wenn Sie den Offset auf der ganzen Seite Sie eine Funktion wie verwenden könnten erhalten wollen:

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

Danke für Ihre Hilfe – amateur

0

ich dieses Problem in IE8, wenn mein Skript auf einer Seite geladen wird, wo das Element dass wir die offset().top von nicht erhalten möchten.

ich es wie folgt gelöst:

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

nie offset().top ausführen, wenn das Element nicht existiert.