voglio tracciare alcuni tag speciali come componente di interfaccia utente, ad esempio <colore>, <data>, in modo che quando si crea tale elemento e inserito per DOM, posso convertirlo in . vera blocco HTML funzionaleparentNode è nullo con MutationObserver.observe (document.body
Ecco il codice, osservare addedNodes su document.body
function handleAddedNodes(nodes) {
[].forEach.call(nodes, function(node) {
if (!node.tagName)
return;
//how is it possible, node.parentNode is null?????
if (!node.parentNode) {
return;
}
});
}
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
handleAddedNodes(mutation.addedNodes);
});
});
observer.observe(document.body, {
childList : true,
subtree : true
});
funziona bene come previsto, ma ho anche trovato un problema strano:. nessuna parentNode per alcuni addedNodes (come "osservare (document.body "significa addedNodes dovrebbe essere discendente di document.body, giusto?)
L'intera funzione funziona come un addon per un grande progetto di frontend, non so come il progetto muta il DOM, set innerHTML o appendChild (troppo codice qui). Inoltre, non può essere sottoposto a debug, poiché la funzione di osservazione è asincrona, come evento, nessuna funzione chiamata stack.
Quindi, voglio solo sapere cosa potrebbe causare questo, e
ancora meglio se può essere riprodotto con jsFiddle
.
Beh, sembrava jsFiddle può riprodurre questo,
Quindi come rimuovere immediatamente un elemento (più veloce del prossimo setImmediate)? – Andrew
@Andrew scusa ero occupato, vedere l'aggiornamento – megawac
Ok, capisco. Grazie. – Andrew