Ich erstelle dynamisch DOM-Elemente (genauer gesagt mit jQuery, um ein DIV zu erstellen, das Text mit css "width: auto" enthält, und eine Schriftart "font-face") , in der Seite OnLoad Ereignis), aber finde, dass die Breite des div ist nicht die erwartete Größe (speziell ist die Breite falsch) sofort nachdem ich es erstellen und fügen Sie es in den DOM-Baum. Ich muss die Breite/Höhe des Elements kennen, weil ich ein dynamisches Layout darauf machen werde.Ermitteln von genauen Bemaßungen für ein neu erstelltes DOM-Objekt
Als Abhilfe können, verwende ich den folgenden Code nach Erstellen der Elemente:
SetTimeout (complete_layout, 100)
Durch die Fertigstellung meines Layout mit diesem zusätzlichen Timeout verzögern, alles funktioniert perfekt, mit allen Elementgrößen genau wie erwartet (In der neuesten Chrome auf Ubuntu Linux)
Allerdings klagt diese Klugey Timer Verzögerung meine Empfindlichkeiten und ist eindeutig unsicher ... Gibt es eine Möglichkeit, genaue zu erzwingen Dimensionsberechnungen mit einem bestimmten Befehl? Oder gibt es ein Ereignis, das ich registrieren kann, das nur ausgelöst wird, wenn alle DOM-Elemente korrekt dimensioniert sind, nachdem neue dynamische Elemente erstellt wurden? (Ich bin so etwas wie die IMG onload Ereignis abbildet, die Sie die richtigen Dimensionen eines Bildes, um herauszufinden erlaubt, sobald es geladen ist)
tl; dr: Gibt es eine Garantie, wann die Breite eines neu erstellte DOM-Objekt wird genau sein?
Danke für Ihre Hilfe!
Sind Sie andere DOM-Manipulation zu tun, nachdem Sie dieses DIV in das DOM hinzufügen? –
Nein, ich $ gerade tun ("# foo"). anhängen ($ ("
Sie werden mehr Glück haben, gute Antworten zu erhalten, wenn Sie eine kleine Code-Reduktion veröffentlichen, die das Problem reproduziert. http://jsbin.com und http://jsfiddle.net sind praktisch dafür. Sie können das Problem sogar selbst lösen, wenn Sie dies tun. – Hemlock