観察しているものを何も変更していないため、機能していないようです。あなたも変わらない
- ノードの属性 (
attributes: true
) (属性がないため、これは理解できます)document
document
- 子ノード (
childList: true
): の唯一の子ノードはdocument
ノード<html>
であり、それを削除または置換していません。
- 文字データ (
characterData: true
): の Text、Comment、または ProcessingInstruction の子を変更していませんdocument
(このような子を持つことができないため、これも理解document
できます)。
ノードを交換する<html>
と、Mutation Observer が設定どおりに機能することがわかります。
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.target.nodeName);
});
});
observer.observe(document, {
attributes: true,
childList: true,
characterData: true
});
document.replaceChild(document.createElement('div'), document.documentElement);
あなたがしているのは、 の子孫でol
ある要素の内容を変更することです。document
この種の変更を聞きたい場合は、subtree
true に設定する必要があります。
observer.observe(document, {
attributes: true,
childList: true,
subtree: true,
characterData: true
});
詳細については、MDN ドキュメントを参照してください。
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.target.nodeName);
});
});
observer.observe(document, {
attributes: true,
childList: true,
subtree: true,
characterData: true
});
<div>
<ol contenteditable oninput="">
<li>Press enter</li>
</ol>
</div>