Mutation Observer kann die Entfernung des Doms durch das Element nicht erkennen

8

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:)

HTML

%Vor%

JavaScript

%Vor%

Danke!

    
undefined 19.02.2015, 03:54
quelle

2 Antworten

6

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.

    
the8472 19.02.2015, 04:01
quelle
0

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.

%Vor%
    
Tim Strand 15.05.2017 17:39
quelle