MutationObserver没有childList的characterData用法

时间:2015-11-04 12:29:19

标签: javascript jquery html dom mutation-observers

直到最近,我才认为在添加/删除子节点时childList : true上使用了MutationObserver 例如从<span id='mama-span'> </span><span id='mama-span'><span id='baby-span'></span></span>

当观察到的元素内的文本e.t characterData : true<span> </span>时,

<span> with some text </span>将被使用。 It turns out that for text change to be observed需要添加childList : true

有没有人能想到没有childList会使用characterData的情况?它用于什么?

1 个答案:

答案 0 :(得分:8)

您可以直接观察文本节点。在这种情况下,您不需要观察 childList 。例如,在 contenteditable 元素中,有许多情况可能会有用。像这样:

&#13;
&#13;
// select the target node
var target = document.querySelector('#some-id').childNodes[0];

// 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: false, characterData: true };
 
// pass in the target node, as well as the observer options
observer.observe(target, config);
&#13;
<div id='some-id' contenteditable='true'>Modify content</div>
&#13;
&#13;
&#13;