--- 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 );
callbackvoid 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
);
targetoptionsMutationObserverInit 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.
MutationObserverInitMutationObserverInit 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 |