単一のMutationObserver
インスタンスを作成する必要があります。要素をdocument
から削除する前にobserver.disconnect()
と呼び出してください。
document
に新しい要素が追加された場合は、のメソッドMutationObserver
のメソッドをターゲット要素と元の構成で呼び出します。
const el = "div";
let i = 0;
let n = 0;
function create() {
let div = document.createElement(el);
div.textContent = el + " " + ++i;
div.contentEditable = true;
document.body.appendChild(div);
return div
}
let div = create();
function handleMutation(mutation) {
console.log(mutation.type);
if (++n === 3) {
n = 0;
observer.disconnect();
div.parentElement.removeChild(div);
div = create();
// use same `MutationObserver` instance for new `<div>` element
observer.observe(div, config);
};
}
const observer = new MutationObserver(function(mutations) {
mutations.forEach(handleMutation);
});
const config = {
childList: true,
subtree: true,
characterData: true
};
observer.observe(div, config);
置き換え要素がdocument' 'に作成および添付されているときには、' MutationObserver'を添付することができます。 – guest271314
このアプローチを使用すると、古くからの変異観察者がたくさんいるでしょう?あなたも古いものをきれいにする必要がありますか? – dust