Ich setze die html des body-Elements in einem iframe auf eine string str, dann möchte ich auf den Inhalt in der nächsten Zeile zugreifen (hier nur mit einem Alert-Aufruf, um den Inhalt anzuzeigen), aber die html- und append-Funktionen zum Zeitpunkt des Aufrufs der Alert-Anweisung nicht abgeschlossen.
%Vor%Und natürlich nehmen weder die HTML- noch die Append-Funktionen Callbacks entgegen.
Könnte mir jemand sagen, wie man normalerweise darauf wartet, dass das DOM geändert wird, bevor man fortfährt?
Wenn Sie jQuery verwenden, können Sie sich auf .closest()
verlassen, um herauszufinden, ob das soeben erstellte Element über ein Elternelement verfügt body
tag, und wenn dies der Fall ist, bedeutet dies, dass es dem DOM hinzugefügt wurde. Sie können eine Funktion wie die folgende schreiben, damit Sie etwas tun können, wenn Ihr Element bereit ist:
html
und append
beide rufen domManip
auf, was eine synchrone Methode ist, daher sollte alert
nicht einmal ausgeführt werden, bis diese Aufrufe abgeschlossen sind.
Sind Sie sicher, dass die erwarteten Werte in die erwarteten Orte kopiert werden?
Sie sollten $ (window) .load (function ()) anstelle von document.ready versuchen. Sie könnten das Ereignis auch immer nach dem Anhängen auslösen. Auf diese Weise werden die Ereignisse erst ausgeführt, wenn der Anhang erfolgreich gerendert wurde.
Das window.load wird nur ausgeführt, wenn das dom geladen wurde und dann auch der gesamte Inhalt innerhalb des Doms.
Wenn das nicht für Sie funktioniert, dann könnten Sie immer ein setTimeout () auf dem document.ready oder window.load ausführen und Ihre Funktionen / Ereignisse dort einfügen und es wird nach einer bestimmten Anzahl von Sekunden geladen.
könntest du versuchen:
%Vor% Sie müssen $( document ).ready( function( ){ } )
oder $( function( ){ } )
verwenden, aber mit dem Dokumentelement dieses iframes.
Um dies zu tun, können Sie Ihr Skript in den HTML-Code des iframes einfügen.
%Vor%Oder Sie können versuchen, es auf dem neu angehängten iframe-DOM-Element selbst, aber aus dem übergeordneten Frame zu tun. Dies ist in den verschiedenen Browsern unterschiedlich, aber das folgende Beispiel sollte funktionieren.
%Vor%Sag mir, wenn ich falsch liege, wie ich schon sagte, habe ich das nicht getestet.
Ich folgte der grancalavera Antwort, aber ich benutzte die Länge, weil mein Selektor bereits im Körper existiert ... Also:
%Vor%Tags und Links jquery