2010-12-02 11 views
7

Tengo un problema de navegador cruzado con la función offset() en jQuery. Por ejemplo, estoy buscando el desplazamiento de una etiqueta de anclaProblema del navegador cruzado con la función jquery offset()

por ejemplo. $('#anchorid').offset().top

  • En Firefox 3.6 = 205
  • En IE8 = 204
  • En Internet Explorer 7 = 553

Como se puede ver la diferencia en cada valor devuelto. No estoy demasiado preocupado con la diferencia entre FF & IE8 pero estoy con IE7 y los demás.

¿Hay alguna otra función que podría usar que sea la misma o similares navegadores cruzados o una posible solución para esto?

+3

¿Tiene una página de ejemplo? Eso es * camino * apagado. –

Respuesta

10

Es posible que exista algo incorrecto (sin navegador cruzado) con su marcado. Pero como alternativa, podrías intentar usar Javascript nativo en su lugar.

document.getElementById('anchorid').offsetTop 

de si quería obtener el offset en toda la página se puede utilizar una función como:

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

Gracias por su ayuda – amateur

0

me sale este problema en IE8 cuando mi script se carga en una página donde el elemento que queremos obtener el offset().top de does not exist.

Lo resuelto de esta manera:

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

Nunca ejecutar offset().top si el elemento no existe.

Cuestiones relacionadas