2016-08-09 4 views
2

MutationRecord.addedNodes gibt NodeList mit Knoten zurück, die in meinem Dokument als hinzugefügt erkannt wurden. Wenn ich die Methode obj.appendChild() verwende, erkennt mutationObserver sie und gibt diesen EINEN Knoten in MutationRecord.addedNodes als nodelist [node] zurück. Wenn ich .appendChild() in der Schleife verwende, wird mutationObserver so oft ausgelöst, wie die Anzahl der Schleifen beträgt.Anzahl der in MutationRecord.addedNodes zurückgegebenen Knoten nodelist (mutationObserver)

Ich frage mich, ob es Fälle gibt, in denen mutationOvserver mehr als einen gleichzeitig hinzugefügten Knoten erkennt und ONCE auslöst und diese Knoten in MutationRecord.addedNodes als EINE Nodelist [Knoten, Knoten, Knoten, ...] zurückgibt?

Antwort

2

Gemessen nach the spec entspricht ein appendChild einem Einzelknoten addedNodes Array.

addedNodes enthält in der Regel viele Knoten während der ersten Seite zu laden, und natürlich, wenn viele Knoten von JS-Code in einem Arbeitsgang über insertAdjacentHTML eingefügt wurden, oder document.write oder .innerHTML oder .outerHTML oder DocumentFragment mit vielen Knoten.

+0

Mit anderen Worten gibt es keine Möglichkeit, das Verhalten von 'mutationObserver' selbst zu steuern? (Angenommen, wir dürfen den Teil des Codes, an dem die Node-Einfügungen vorgenommen werden, nicht umgestalten.) – Pacerier

+0

Blick auf [Schritt 5] (https://www.w3.org/TR/dom/#queue-a-mutation -observer-compound-mikrotask) in der verknüpften Spezifikation Ich nehme an, dass Sie die zusammengesetzte Mikrotask-Planung beeinflussen müssen, um eine Koaleszenz zu vermeiden. Ich habe Knoten Idee, wie. – wOxxOm

Verwandte Themen