--- title: MutationObserver slug: Web/API/MutationObserver translation_of: Web/API/MutationObserver ---
{{APIRef("DOM")}}
MutationObserver fornece aos desenvolvedores uma maneira de reagir a mudanças em um DOM. Ele é concebido como um substituto para Mutation Events definido na especificação de eventos DOM nível 3.
MutationObserver()Construtor para instanciar novos observadores de mutação do DOM.
MutationObserver( function callback );
callbackMutationRecord. O segundo é a essa instância MutationObserver.void observe( {{domxref("Node")}} target, MutationObserverInit options ); |
void disconnect(); |
Array takeRecords(); |
observe()Registra a instância MutationObserver para receber notificações das mutações do DOM no nó especificado.
void observe(
{{domxref("Node")}} target,
MutationObserverInit options
);
targetoptionsMutationObserverInit especifica quais mutações DOM devem ser reportadas.disconnect()Pára o rebimento de notificações das mutações do DOM na instância MutationObserver. O callback do observador não será invocado até que método observe() seja novamente utilizado.
void disconnect();
takeRecords()Esvazia a fila de registro da instância MutationObserver e retorna o que estava nela.
Array takeRecords();
Retorna um Array de MutationRecords.
MutationObserverInitMutationObserverInit é um objeto que pode especificar as seguintes propriedades:
childList, attributes, ou characterData devem ser definidos como true. Caso contrário o erro "An invalid or illegal string was specified" é lançado.| Property | Description |
childList |
Defina como true se adições e remoções dos elementos filho do nó alvo (incluindo nós de texto) devem ser observadas. |
attributes |
Defina como true se mutações dos atributos do alvo devem ser observadas. |
characterData |
Defina como true se mutações dos dados do alvo devem ser observadas. |
subtree |
Defina como true se mutações não apenas do alvo, mas também dos descendentes do alvo devem ser observadas. |
attributeOldValue |
Defina como true se attributes é definido como true e o valor do atributo do alvo antes da mutação precisa ser gravado. |
characterDataOldValue |
Defina como true se characterData é definido como true e os dados do alvo antes da mutação precisam ser gravados. |
attributeFilter |
Defina como um array de nomes locais de atributo (sem namespace) se nem todas mutações de atributo precisam ser observadas. |
MutationRecordMutationRecord é um objeto que será passado para o callback do observador. Tem as seguintes propriedades:
| Property | Type | Description |
type |
String |
Retorna attributes se a mutação foi a de um atributo, characterData se foi de um nó CharacterData, e childList se foi a mutação para uma árvore de nós. |
target |
{{domxref("Node")}} |
Retorna o nó que a mutação afetou, dependendo do type. Para attributes é o elemento cujo atributo mudou. Para characterData é o nó CharacterData. Para childList é o nó cujos filhos mudaram. |
addedNodes |
{{domxref("NodeList")}} |
Retorna os nós adicionados. Será uma NodeList vazia se nenhum nó foi adicionado. |
removedNodes |
{{domxref("NodeList")}} |
Retorna os nós removidos. Será uma NodeList vazia se nenhum nó foi removido. |
previousSibling |
{{domxref("Node")}} |
Retorna o irmão anterior dos nós adicionados ou removidos, ou null. |
nextSibling |
{{domxref("Node")}} |
Retorna o próximo irmão dos nós adicionados ou removidos, ou null. |
attributeName |
String |
Retorna o nome local do atributo modificado, ou null. |
attributeNamespace |
String |
Retorna o namespace do atributo modificado, ou null. |
oldValue |
String |
O valor retornado depende do type. Para attributes, é o valor do atributo modificado antes da troca. Para characterData, são os dados do nó modificado antes da troca. Para childList é null. |
O exemplo a seguir foi retirado deste post.
// seleciona o nó alvo
var target = document.querySelector('#some-id');
// cria uma nova instância de observador
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
// configuração do observador:
var config = { attributes: true, childList: true, characterData: true };
// passar o nó alvo, bem como as opções de observação
observer.observe(target, config);
// mais tarde você pode parar de observar
observer.disconnect();
MutationObserver{{Compat("api.MutationObserver")}}