2016-11-01 4 views
1

Die und alle Mutationsereignisse wurden durch Mutationsbeobachter ersetzt.Was ist das neue Äquivalent von DOMNodeInserted?

Aber, within mutation observers gibt es nur Konfigurationsoptionen zum Ansehen von Mutationen zu den Knoten Attribute, Inhalt und Kinder. Nichts über eine Mutation zu seiner Platzierung in der DOM-Struktur.

Es gibt eine "Lösung", die ich mir vorstellen kann, um alles von document.body zu beobachten, auf der Suche nach der einen Mutation, die mein Zielknoten hinzugefügt wird, aber das ist eine ziemlich schreckliche Art, etwas zu tun.

Also, was ist der erwartete Weg, den veralteten DOMNodeInserted durch Mutation Observers zu ersetzen?

EDIT: gefunden möglich Duplikat What is the most efficient way of detecting when an element with a particular ID is inserted in the DOM

Noch einmal SO: The searchbar works better with Tags than Questions. Explaining this could reduce duplicates and save users time

Nachfolgend finden Sie einige Code, wo Sie, dass keines der verfügbaren Mutation Beobachter sehen können Konfigurationsoptionen auf das Element reagieren auf die Seite hinzugefügt werden :

var addMe = document.createElement("div"); 
 
var config = { 
 
    attributes: true, 
 
    childList: true, 
 
    characterData: true 
 
} 
 
var observer = new MutationObserver(function(mutations) { 
 
    console.log(mutations); 
 
}); 
 
observer.observe(addMe, config); 
 

 
function appendAddMe() { 
 
    document.body.appendChild(addMe); 
 
}
div { 
 
    height: 50px; 
 
    width: 50px; 
 
    background: #969; 
 
}
<button onclick="appendAddMe()">Append addMe</button>

Antwort

0

Ich glaube nicht, dass dies die Antwort auf die Frage ist, aber ich würde es gerne teilen, denn es ist besser als nichts.

Diese Frage hat einige gute Antworten: What is the most efficient way of detecting when an element with a particular ID is inserted in the DOM

Insbesondere diese Antwort: https://stackoverflow.com/a/25107064/4808079 von schettino72

iframe-Elemente laden/unoad Ereignisse auslösen. Sie können einen dummen iframe in das Element einfügen, das Sie sehen möchten ... und ein "load" -Ereignis im ursprünglichen Element auslösen.

function watch($ele){ 
    var $iframe = document.createElement('iframe'); 
    $iframe.style.display = 'none'; 
    $ele.appendChild($iframe); 
    $iframe.addEventListener('load', function(){ 
     var event = new CustomEvent('load'); 
     $ele.dispatchEvent(event); 
    }); 
} 

würde ich immer noch diese Frage gerne offen halten, da dies ein Hack und keine richtige Antwort. DOMNodeInserted war wahrscheinlich nicht veraltet, so dass jeder es stattdessen tun konnte.

Verwandte Themen