7

J'ai un problème de navigateur croisé avec la fonction offset() dans jQuery. Par exemple, je cherche le décalage d'une étiquette d'ancrageProblème de navigateur multiple avec la fonction jquery offset()

par exemple. $('#anchorid').offset().top

  • Dans Firefox 3.6 = 205
  • Dans IE8 = 204
  • Dans IE7 = 553

Comme vous pouvez voir la différence dans chaque valeur retournée. Je ne suis pas trop préoccupé par la différence entre FF & IE8 mais je suis avec IE7 et les autres.

Y a-t-il une autre fonction que je pourrais utiliser qui serait la même ou des navigateurs croisés similaires ou une solution possible pour cela?

+3

Avez-vous un exemple de page? C'est * way * off. –

Répondre

10

Les chances sont qu'il y ait quelque chose de mal (non-crossbrowser) avec votre balisage. Mais comme alternative, vous pouvez essayer d'utiliser le javascript natif à la place.

document.getElementById('anchorid').offsetTop 

de si vous voulez obtenir le décalage sur la page entière, vous pouvez utiliser une fonction comme:

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

Merci pour votre aide – amateur

0

Je reçois ce problème dans IE8 quand mon script est chargé sur une page où l'élément que nous voulons obtenir le offset().top de n'existe pas.

Je l'ai résolu comme ceci:

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

Ne jamais exécuter offset().top si l'élément n'existe pas.

Questions connexes