2016-07-29 6 views
2

Ich habe eine MutationObserver, dass ich wie so-MutationObserver - nur etwas tun, wenn Knoten hinzugefügt, nicht entfernt

var config = { 
    attributes: false, 
    childList: true, 
    characterData: false, 
    subtree: true 
}; 

var observer = new MutationObserver(function(mutations) { 
    //need to call function1() only when nodes are ADDED, not removed 
}); 

var startObserving = function() { 
    target = document.getElementsByClassName("message-container")[0]; 
    observer.observe(target, config); 
} 

Ich brauche beides bin mit hinzufügen und entfernen Elemente/aus dem Behälter, der die MutationObserver ist beobachten, aber ich möchte nur function1() ausführen, wenn Knoten hinzugefügt werden. Gibt es eine Möglichkeit, dies zu tun? Ich habe den Artikel MDN Artikel gelesen, kann aber nicht einen Weg finden, dies zu tun. Jede Hilfe wäre willkommen!

Antwort

2

Sie sollten in der Lage sein, die addedNodes-Eigenschaft auf jedem Objekt mutations zu überprüfen, um festzustellen, ob Elemente hinzugefügt wurden. Wahrscheinlich möchten Sie auch bestätigen, dass typechildList ist.

Überprüfen Sie die MutationRecord Seite auf dem MDN.

So etwas wie

var observer = new MutationObserver(function(mutations) { 
    var hasUpdates = false; 

    for (var index = 0; index < mutations.length; index++) { 
    var mutation = mutations[index]; 

    if (mutation.type === 'childList' && mutation.addedNodes.length) { 
     hasUpdates = true; 

     break; 
    } 
    } 

    if (hasUpdates) { 
    function1(); 
    } 
}); 
+0

auch diese meine Funktion mehrmals lief, aber ich gerade zu Ende gegangen, Ihre Antwort mit, aber das Hinzufügen einer boolean zu überprüfen, ob „== true hinzugefügt“ und rief dann meine Funktionen außerhalb der for-Schleife und es funktioniert wie ein Zauber. Vielen Dank! – shanling

+0

Ah ja, ich wusste nicht, ob du irgendwelche Informationen über das, was speziell geändert wurde, weitergeben musst oder es einfach einmal laufen lässt, aber ich bin froh, dass es für dich geklappt hat – Jared

Verwandte Themen