--- title: MutationObserver slug: Web/API/MutationObserver tags: - API - DOM - DOM Referentie - Geavanceerd - NeedsContent - NeedsUpdate - Referentie translation_of: Web/API/MutationObserver ---
{{APIRef("DOM")}}
MutationObserver
biedt ontwikkelaars een manier om te reageren op veranderingen in een DOM. Het is ontworpen als een vervanging voor Mutation Events, gedefinieerd in de DOM3 Events specificatie.
MutationObserver()
Constructor om nieuwe DOM mutation observer instances mee aan te maken.
new MutationObserver( function callback );
callback
void observe( {{domxref("Node")}} target, MutationObserverInit options ); |
void disconnect(); |
Array takeRecords(); |
Nota bene: {{domxref("Node")}} target moet niet verward worden met NodeJS.
observe()
Registreert de MutationObserver instance om notifcaties te ontvangen wanneer er DOM mutaties op de gespecificeerde node worden uitgevoerd.
void observe(
{{domxref("Node")}} target,
MutationObserverInit
options
);
target
options
MutationObserverInit
object specificeert welke DOM mutaties gerapporteerd zouden moeten worden.disconnect()
Zorgt ervoor dat de MutationObserver
instantie geen notificaties van DOM mutaties ontvangt. Totdat observe()
weer is aangeroepen, wordt de callback van de observer niet aangeroepen.
void disconnect();
takeRecords()
Leegt de record queue van de MutationObserver
instantie en returnt wat daarin zat vóór het legen.
Array takeRecords();
Returnt een Array van {{domxref("MutationRecord")}}s.
MutationObserverInit
MutationObserverInit
is een object waarin de volgende properties gespecificeerd kunnen worden:
childList
, of attributes
, of characterData
true
zijn. Anders wordt er een error teruggegeven met de melding: "An invalid or illegal string was specified".Property | Description |
childList |
true als toevoegingen en verwijdering van kinderen van de target node (inclusief text nodes) geobserveerd moeten worden. |
attributes |
true als mutaties van de attributen van de target node geobserveerd moeten worden. |
characterData |
true als mutaties van de data van de target node geobserveerd moeten worden. |
subtree |
true als mutaties van niet alleen de target node, maar ook de kinderen van de target node geobserveerd moeten worden. |
attributeOldValue |
true als attributes op true is gezet en de attribuutwaarde van de target node voordat de mutatie plaatsvond opgeslagen moet worden. |
characterDataOldValue |
true als characterData op true is gezet en de data van de target node voordat de mutatie plaatsvond opgeslagen moet worden. |
attributeFilter |
Is een array van lokale attribuutnamen (zonder namespace) als niet alle attribuutmutaties geobserveerd hoeven te worden. |
Het volgende voorbeeld is overgenomen van deze blogpost.
// selecteer de target node var target = document.querySelector('#some-id'); // creëer een observer instantie var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { console.log(mutation.type); }); }); // configuratie van de observer instantie var config = { attributes: true, childList: true, characterData: true }; // roep observe() aan op de observer instantie, en stuur de target node en de observer configuratie mee observer.observe(target, config); // wanneer je wilt, kun je weer stoppen met observeren observer.disconnect();
Specificatie | Status | Commentaar |
---|---|---|
{{SpecName('DOM WHATWG', '#mutationobserver', 'MutationObserver')}} | {{ Spec2('DOM WHATWG') }} | |
{{SpecName('DOM4', '#mutationobserver', 'MutationObserver')}} | {{ Spec2('DOM4') }} |
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basisondersteuning | 18 {{property_prefix("-webkit")}} 26 |
{{CompatGeckoDesktop(14)}} | 11 | 15 | 6.0 {{property_prefix("-webkit")}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basisondersteuning | {{CompatUnknown}} | 18 {{property_prefix("-webkit")}} 26 |
{{CompatGeckoMobile(14)}} | 11 (8.1) | 15 | 6 {{property_prefix("-webkit")}} 7 |