Desidero utilizzare un oggetto MutationObserver
per osservare le modifiche ad alcuni dei miei nodi DOM.Un singolo oggetto MutationObserver può osservare più destinazioni?
I documenti forniscono un esempio di creazione di un oggetto MutationObserver
e di registrazione su una destinazione.
// select the target node
var target = document.querySelector('#some-id');
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };
// pass in the target node, as well as the observer options
observer.observe(target, config);
Dire che ho il codice di cui sopra, ma proprio in virtù di esso, ho inserire questo codice:
var target2 = document.querySelector('#some-other-id');
var config2 = {attributes: true, subtree: true};
observer.observe(target2, config2);
Will observer
:
- ora osservando 2 obiettivi?
- interromperà l'osservazione
target
? - deciderà di non osservare
target2
? - genera un errore?
- o mostrerà qualche altro comportamento?
Very nice! Anche se mi chiedo se questo funziona in modo coerente in tutti i browser, e mi chiedo se è coerente se ti capita di osservare un elemento all'interno di un elemento che hai iniziato ad osservare? – NoBugs
Si noti inoltre che l'osservazione della stessa destinazione più di una volta, non comporterà più chiamate alla richiamata per le modifiche a quell'elemento. –
@NoBugs @ major-mann Né più osservazioni sullo stesso elemento né osservazioni su 2 elementi - dove uno era all'interno dell'altro - si tradurrebbe in più record di mutazione (né in più 'mutation.addedNodes') passando l'ascolto funzione quando ho provato su Chrome 56. – jdunk