Je crée des éléments DOM dynamiquement (plus précisément, en utilisant jQuery pour créer un DIV contenant du texte avec css "width: auto", et en utilisant une police "font-face" , dans l'événement OnLoad page), mais trouve que la largeur de la div n'est pas la taille attendue (en particulier, la largeur est erronée) immédiatement après je l'ai créé et l'ajouter à l'arborescence DOM. J'ai besoin de connaître la largeur/hauteur de l'élément car je vais faire une mise en page dynamique.Obtenir des cotes précises pour un objet DOM nouvellement créé
Pour contourner ce problème, j'utilise le code suivant après avoir créé les éléments:
SetTimeout (complete_layout, 100)
En retardant l'achèvement de ma mise en page avec ce délai supplémentaire, tout fonctionne parfaitement, avec toutes les tailles d'éléments exactement comme prévu (dans le dernier Chrome sur Ubuntu Linux)
Cependant, ce délai de temporisation klugey heurte mes sensibilités et est clairement dangereux ... Y at-il un moyen de forcer la précision calculs de dimension avec une commande spécifique? Ou, y a-t-il un événement que je peux enregistrer qui ne se déclenchera qu'une fois que tous les éléments DOM auront été correctement dimensionnés, après la création de nouveaux éléments dynamiques? (J'imaginais quelque chose comme l'événement onload IMG, qui vous permet de comprendre les dimensions appropriées d'une image une fois qu'il a été chargé)
tl; dr: Y a-t-il une garantie quant au moment où la largeur d'un nouvel objet DOM sera-t-il précis?
Merci pour votre aide!
Êtes-vous en train de faire une autre manipulation DOM après avoir ajouté que DIV dans les DOM? –
Non, je fais juste $ ("# foo"). append ($ ("
Vous aurez plus de chance d'obtenir de bonnes réponses si vous postez une petite réduction de code qui reproduit le problème. http://jsbin.com et http://jsfiddle.net sont pratiques pour cela. Vous pouvez même résoudre le problème vous-même si vous le faites. – Hemlock