Je me demande pourquoi MutationObserver ne détecte pas les modifications de texte effectuées à l'aide de textContent.
HTML
<div id="mainContainer">
<h1>Heading</h1>
<p>Paragraph.</p>
</div>
JavaScript
function mutate(mutations) {
mutations.forEach(function(mutation) {
alert(mutation.type);
});
}
jQuery(document).ready(function() {
setTimeout(function() {
document.querySelector('div#mainContainer > p').textContent = 'Some other text.';
}, 2000);
var target = document.querySelector('div#mainContainer > p')
var observer = new MutationObserver( mutate );
var config = { characterData: true, attributes: false, childList: false, subtree: true };
observer.observe(target, config);
});
Dans le script ci-dessus, le contenu textuel de l'élément paragraphe change clairement, mais MutationObserver ne le détecte pas.
Toutefois, si vous remplacez textContent par innerHTML, vous serez averti que le "characterData" a changé.
Pourquoi MutationObserver détecte-t-il innerHTML mais pas textContent ?
Voici le JS Fiddle :
https://jsfiddle.net/0vp8t8x7/
Notez que vous ne serez alerté que si vous remplacez textContent par innerHTML.