那能举一个例子吗
时间: 2024-01-15 18:05:50 浏览: 74
当然可以,以下是一个使用 MutationObserver 监听元素内容变化的例子:
HTML 代码:
```html
<div id="content">初始内容</div>
<button id="btn">修改内容</button>
```
JavaScript 代码:
```javascript
// 监听内容变化的回调函数
const callback = function(mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList') {
console.log('内容发生变化:', mutation.target.textContent);
}
}
};
// 创建一个 MutationObserver 对象
const observer = new MutationObserver(callback);
// 观察指定节点的变化
const targetNode = document.getElementById('content');
const config = { childList: true };
observer.observe(targetNode, config);
// 修改内容
const btn = document.getElementById('btn');
btn.addEventListener('click', function() {
targetNode.textContent = '修改后的内容';
});
```
在这个例子中,我们创建了一个 MutationObserver 对象,并指定了回调函数 callback。然后,我们观察了 id 为 content 的 div 元素的子节点变化。最后,我们添加了一个点击事件,当按钮被点击时修改 content 元素的内容,观察是否会触发回调函数。
当我们点击按钮修改内容时,控制台会输出 "内容发生变化: 修改后的内容",表示内容发生了变化,并且回调函数被触发了。
阅读全文