2012-08-26 21 views
6

Aquí está la situación:

$(document).ready(function(){ 
    // this will return different result 
    alert($('#foo').width()); 
    // than this !!! 
    setTimeout(function(){ 
    alert($('#foo').width()); 
    }, 1000); 
}); 

CSS (en <head> sección):

<link href='http://fonts.googleapis.com/css?family=Headland+One' rel='stylesheet' type='text/css'> 
... and 
#foo { 
    font-family: 'Headland One', serif; 
} 

Cuando uso de letra estándar (por ejemplo, Arial) todo bien (.width() que devuelve el mismo resultado en ambos casos)

¿Hay alguna solución diferente a setTimeout para obtenercorrecta?valor y mantener las fuentes personalizadas?

+0

¿Puedes mostrar qué es 'foo' por lo que respecta a la forma en que se define el elemento y si hay algún evento asociado a él? –

+0

Encontré este: http://stackoverflow.com/questions/5539602/cant-get-right-width-or-outerwidth-of-label-element –

+0

@OfirBaruch de hecho tuvo el mismo problema que yo – Peter

Respuesta

9

Como carga una fuente distante. Debe usar $(window).load() en lugar de $(document).ready(): el primero se activará cuando se hayan descargado todas las fuentes/hojas de estilo/guiones e imágenes distantes, el segundo solo cuando el DOM esté listo.

+1

'$ (ventana) .load() 'hizo el trabajo. Gracias – Peter

+1

Guau, ¿de verdad? He estado buscando la respuesta a esto por alrededor de un año. No puedo creer que fuera tan simple. –

Cuestiones relacionadas