2013-03-29 14 views
5

Wenn eine Seite zuerst geladen wird, können wir window.onload verwenden, um sicherzustellen, dass alle Ressourcen geladen sind, bevor wir etwas tun.window.onload äquivalent nach dem Ändern des DOM?

Meine Frage ist, Wenn wir das DOM ändern (z. (z. B. wenn der eingegebene HTML-Code mehrere Bilder enthält).

(Lösung mit jQuery wäre in Ordnung).

+0

@Felix hinzugefügt wurde - ich will nicht, Änderungen an den DOM erkennen Ich möchte feststellen, wann Ressourcen geladen wurden, nachdem ich das DOM geändert habe. Bei all diesen Fragen handelt es sich um das Erkennen von Änderungen. – UpTheCreek

+0

Vielleicht sollten Sie dies dann explizit angeben. Das DOM ist bereit und alle geladenen Ressourcen sind zwei verschiedene Dinge. –

+1

Nur zur Klarstellung, da Sie anscheinend nicht zwischen load und ready unterscheiden, kommt es in jQuery vor, dass .load() auftritt, wenn die Seite vollständig gerendert wird, während .ready() passiert, sobald die DOM-Hierarchie erstellt wird. Wenn Ihr Code von geladenen Assets abhängt (z. B. müssen Sie Dimensionen eines Images abrufen), sollten Sie .load() verwenden, um sicherzustellen, dass der Code ausgeführt wird, wenn alle erforderlichen Assets verfügbar sind. Andernfalls können Sie .ready() verwenden, um die Dinge zu beschleunigen, da Ihr Code beim Rendern ausgeführt wird. – excentris

Antwort

2

Die kurze Antwort: NR.

Die lange Antwort: Wenn Sie wissen, was Sie suchen, können Sie Mutationsbeobachter (https://developer.mozilla.org/en-US/docs/DOM/MutationObserver) verwenden. Es ist nur Unterstützung in einem neuen Browser und in einigen Versionen von Chrome hat es Speicherverluste, wenn es mit Verschlüssen verwendet wird.

BTW, document.ready sagt Ihnen nicht, ob alle (oder irgendwelche ..) der Ressourcen geladen wurden. es sagt Ihnen nur gut, dass das dom bereit ist (das ist die Ladefunktion, die nur nach alle Ressourcen (na ja, alle Ressourcen, die nicht mit einem Javascript angefordert wird) wurden heruntergeladen).

0

Sie können .done() verwenden.

Beschreibung: Handler hinzufügen aufgerufen werden, wenn das latente Objekt aufgelöst wird.

Auch gibt es jQuery-Plugin See Here

+1

Nicht sicher, ich folge Dipesh. Ich kann eine Anknüpfung an das Versprechen des Ajax-Aufrufs anhängen, aber dies sagt mir nur, wenn ich die Daten habe, und nicht über Ressourcen, die nach dem Einfügen in das DOM geladen werden. Oder meinst du etwas anderes? – UpTheCreek

0

würde ich sagen JA (ich weiß nicht, ob dies von allen Browsern unterstützt wird. Ich benutze es in Safari und Chrom)

Testcase finden Sie hier : http://maakmenietgek.nl/testcases/domready/ Bitte beachten sie, dass ich es nicht in einer Geige Arbeit bekommen kann, ist das, warum ein eigenständiger Testfall

Die index.html wie dies

sieht

Die mit dem $.get Aufruf geladenen Daten wie folgt aussehen

<p>added data</p> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('added data'); 
    }); 
</script> 

Die Warnung zeigt, nachdem die HTML-DOM

Verwandte Themen