Also, ich dachte, das wäre ziemlich einfach, da war ein DOMNodeRemoved
-Ereignis, aber das ist veraltet, stattdessen MutationObserver sollte verwendet werden, die Sache ist, es feuert nicht, auch nicht mit der entsprechenden Konfiguration.
Laut diesem Artikel über die Migration von mutierenden Ereignissen zu Mutationsbeobachtern ist die Konfiguration zur Erkennung der Dom-Entfernung eines Knotens { childList: true, subtree: true }
, und das passt dazu, dass childList
obligatorisch ist und subtree
bedeutet, dass Mutationen nicht erfasst werden nur Ziel, aber auch die Nachkommen des Ziels sind zu beobachten nach der MDN-Artikel .
Wie auch immer, ich habe eine jsfiddle Problem gemacht, es ist ziemlich einfach, die <button>
entfernt die <div>
und der Beobachter sollte die Mutationsdatensätze protokollieren, aber es wird nicht angezeigt, wenn Sie es herausfinden können:)
Danke!
Wie die Namen vorschlagen, erfasst childList
nur Änderungen an der Liste der unmittelbaren Kinder eines beobachteten Knotens, und subtree
erweitert alle angegebenen Kriterien auf alle Nachkommen (es führt nichts aus).
Aber Sie tun auch nicht. Sie entfernen den beobachteten Knoten selbst, während seine Nachkommen unverändert bleiben.
Wenn Sie stattdessen nur div.parentNode
beobachten, sollten Sie Ihr Problem lösen.
Ich kam in die gleiche Situation, in der mein Beobachter die Entfernung von Kindern von sich selbst nicht bemerkt. Ich löste es durch Hinzufügen einer Klasse el.classList.add ('Entfernen') eine Zeile vor dem Entfernen der el. Dies veranlasste den Beobachter, meine Veränderungen zu erkennen.
Tags und Links javascript dom mutation-events mutation-observers