Estoy creando elementos DOM dinámicamente (más específicamente, usando jQuery para crear un DIV que contenga texto con css "width: auto", y usando una fuente "font-face" , en el evento OnLoad de la página) pero encuentra que el ancho del div no es el tamaño esperado (específicamente, el ancho es incorrecto) inmediatamente después de crearlo y agregarlo al árbol DOM. Necesito saber el ancho/alto del elemento porque haré un diseño dinámico en él.Obtener dimensiones precisas para un objeto DOM creado recientemente
Como solución, que utiliza el código siguiente después de la creación de los elementos:
SetTimeout (complete_layout, 100)
Al retrasar la finalización de mi diseño con este tiempo de espera adicional, todo funciona perfectamente, con todos los tamaños de elemento exactamente como se esperaba (en el último Chrome en Ubuntu Linux)
Sin embargo, este retraso del temporizador klugey ofende mi sensibilidad y es claramente inseguro ... ¿Hay alguna manera de forzar la precisión cálculos de dimensión con un comando específico? O bien, ¿hay algún evento que pueda registrar que se active solo una vez que todos los elementos DOM hayan sido dimensionados correctamente, después de que se creen nuevos elementos dinámicos? (Estoy imaginando algo así como el proceso de carga IMG, que le permite averiguar las dimensiones propias de una imagen una vez que se ha cargado)
tl; dr: ¿Hay una garantía en cuanto a cuando el ancho de una el objeto DOM recientemente creado será preciso
Gracias por su ayuda!
Qué haces otra manipulación DOM después de agregar que DIV en el DOM? –
No, acabo de hacer $ ("# foo"). append ($ ("
Tendrá mejor suerte para obtener buenas respuestas si publica una pequeña reducción de código que reproduce el problema. http://jsbin.com y http://jsfiddle.net son útiles para esto. Incluso puede resolver el problema usted mismo si lo hace. – Hemlock