Gibt es eine Möglichkeit - mithilfe von jQuery oder anderweitig - das DOM auf Einfügungen, Löschungen, Aktualisierungen von Stilen usw. zu überwachen?Wie überwache ich das DOM auf Änderungen?
Antwort
Siehe "MutationEvent" Elemente hier: https://developer.mozilla.org/en/DOM/DOM_event_reference aber diese sind veraltet.
jQuery bietet nun eine Möglichkeit, Ereignisse zu bestehenden und zukünftigen Elemente zur Befestigung an einen Wähler entsprechen: http://docs.jquery.com/Events/live#typefn
Es kann ein Trick sein, das Sie aus Mangel an richtigen DOM Knoten Änderung Informationen nutzen könnten.
Siehe mutation-summary Bibliothek. Es basiert auf einer neuen Browser-API namens DOM Mutation Observer.
Oder wenn Sie die Bibliothek nicht benötigen, ist die DOM MutationObserver API jetzt in Chrome 18+, Firefox 14+, Safari 6+, IE11 + verfügbar. Es gibt ein gutes Beispiel [hier] (https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/) – foz
Mutation Observer Polyfill für ältere Browser: https://github.com/webcomponents/webcomponentsjs/tree/master/src/MutationObserver – Pylinux
Dies ist nur für Debug-Zwecke:
Firebug ermöglicht derzeit Stützpunkte auf HTML-Knoten setzen.
Sie haben den HTML-Inspektoren zu öffnen, direkt auf einem Knoten klicken und Sie haben folgende Möglichkeiten:
- Interrupt auf Attributänderung
- Interrupt auf Kind add/
- Interrupt entfernen auf entfernen
Sobald Sie den Haltepunkt erreicht haben, können Sie auch den Call-Stack durchsuchen.
Google Chrome hat eine ähnliche Funktion.
Vor kurzem habe ich ein Plugin geschrieben haben, die genau das tut - jquery.initialize
Sie es verwenden die gleiche Art und Weise wie .each
Funktion
$(".some-element").initialize(function(){
$(this).css("color", "blue");
});
Der Unterschied von .each
ist - es Ihre Wähler, in diesem Fall nimmt .some-element
und warten auf neue Elemente mit diesem Selektor in der Zukunft, wenn ein solches Element hinzugefügt wird, wird es auch initialisiert.
In unserem Fall Initialisierungsfunktion ändern Sie einfach die Elementfarbe in blau. Also, wenn wir neues Element hinzufügen werden (egal ob mit Ajax oder sogar F12 Inspektoren oder etwas) wie:
$("<div/>").addClass('some-element').appendTo("body"); //new element will have blue color!
Plugin wird es sofort init. Auch Plugin stellt sicher, dass ein Element nur einmal initialisiert wird. Also, wenn Sie Element, dann .deatch()
es von Körper und dann fügen Sie es wieder hinzu, wird es nicht erneut initialisiert werden.
$("<div/>").addClass('some-element').appendTo("body").detach()
.appendTo(".some-container");
//initialized only once
Plugin basiert auf MutationObserver
- es auf IE9 arbeiten und 10 mit Abhängigkeiten wie auf dem readme page beschrieben.
- 1. Wie überwache ich Änderungen der Zwischenablage in C#?
- 2. Wie überwache ich meine Webanwendung?
- 3. Wie überwache ich den Internetverkehr?
- 4. Wie überwache ich einen Webserver mit Daemontools?
- 5. Drucken von DOM-Änderungen
- 6. Wie überwache ich ColdFusion in Resin?
- 7. Wie überwache ich fehlgeschlagene Anmeldeversuche in Windows?
- 8. Wie überwache ich symlinked Module mit Nodemon?
- 9. Ohne JavaScript Sleep(), wie verzögere ich meine DOM-Änderungen?
- 10. Rückgängig dom Änderungen in JS
- 11. Wie kann ich mit WebKit.NET auf das DOM zugreifen?
- 12. Wie hooke ich das DOM geladene Event?
- 13. Angularjs-Direktiven bei Änderungen an DOM-Attributwerten
- 14. Wie überwache ich die UDP-Puffer in Windows XP?
- 15. jquery erkennt Änderungen in dom outsite jquery
- 16. Angular2-Richtlinie: So erkennen Sie DOM-Änderungen
- 17. Erkennen von DOM-Änderungen in Internet Explorer
- 18. Google Chrome Extension - Zugriff auf das DOM
- 19. Programm, das Änderungen auf Webseite verfolgt
- 20. Wie entferne ich das letzte untergeordnete Element in DOM?
- 21. Wie kratze ich etwas, nachdem JS das DOM geändert hat?
- 22. Monitor Verzeichnis für Änderungen?
- 23. Walking das DOM (JavaScript)
- 24. Beobachten für DOM-Änderungen, die elegante Art und Weise
- 25. Wie manipuliere ich ein dom-Element auf der gleichen Ebene wie das aktuelle? - jQuery
- 26. mehrere Änderungen an DOM im gleichen Browser-Tick-Zyklus
- 27. Stellen Sie sicher, DOM Änderungen abgeschlossen sind, bevor Übergang
- 28. jQuery html() in Firefox (verwendet .innerHTML) ignoriert DOM - Änderungen
- 29. Aufnahme und spätere Wiedergabe von DOM-Änderungen in Firefox?
- 30. DOM-Änderungen werden in meiner Angular2-Komponente nicht ordnungsgemäß ausgeführt
DOMtree Verbindung ist tot ... – eruciform
danke, mit einem Link zum MDN behoben;) –
Mutationsereignisse sind veraltet – Raynos