Por lo tanto, necesito saber el ancho de un elemento con javascript, el problema que tengo es que la función se dispara demasiado pronto y el ancho cambia cuando el css se aplica tottally. Según entendí, la función $ (document) .ready() se activó cuando se completó el documento, pero parece que no funciona así.
De todas formas, estoy seguro de que con el código de mi problema se entenderá (este es un ejemplo simplificado):
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link href='http://fonts.googleapis.com/css?family=Parisienne' rel='stylesheet' type='text/css'>
<style type="text/css">
#target {
font-family: 'Parisienne', cursive;
float: left;
}
</style>
</head>
<body>
<div id="target">Element</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
console.debug($('#target').outerWidth());
alert('hold on');
console.debug($('#target').outerWidth());
});
</script>
Quiero saber el ancho de la div #target, el problema es que el código que se ejecuta antes de la alerta da un resultado diferente que el siguiente, presumiblemente porque la fuente no está completamente cargada y está midiendo el div con la fuente predeterminada.
Funciona como esperaba en Google Chrome, pero no en IE y Firefox.
puedo confirmar 24/11/2013 que este problema todavía existe en jQuery 2.x cuando se pulse el botón de actualización del navegador. Vaya a este [violín] (http://jsfiddle.net/jLDbX/). Cuando cargue el violín por primera vez, todo debería funcionar bien la mayoría de las veces. También funciona si coloca el cursor de su mouse en la URL y pulsa enter. Pero las cosas se irán al infierno si haces clic en el botón de actualización o presionas * CTRL + R *. –
Intenté implementar un "bloqueo de cuenta regresiva" para medir el ancho y la altura solo cuando tanto la carga de ventana disparada como las fuentes dependientes terminaron el disparo. Vea si esto ayuda: [http://jsfiddle.net/jLDbX/1/](http://jsfiddle.net/jLDbX/1/). En este violín, todo parece estar funcionando bien. Pero en mi aplicación en el mundo real, seguí recibiendo errores. Sin embargo, para ti, podría funcionar. –