在JavaScript中,如果你想监听一个<div>
元素内容的改变,你可以使用MutationObserver
接口。这个接口提供了监视对DOM树所做更改的能力。它被设计为替代旧的Mutation Events
特性,该特性是DOM3 Events规范的一部分,但由于性能问题已经被废弃。
以下是使用MutationObserver
来监听<div>
内容改变的基本步骤:
MutationObserver: 一个可以监视DOM树更改的接口。当被观察的DOM发生变化时,它会异步地调用指定的回调函数。
MutationObserver
提供了更好的性能。MutationObserver
可以监视以下类型的变化:
// 选择要观察变动的节点
const targetNode = document.getElementById('myDiv');
// 观察器的配置(需要观察什么变动)
const config = { childList: true, subtree: true, characterData: true };
// 当观察到变动时执行的回调函数
const callback = function(mutationsList, observer) {
// 逐个查看变动
for(let mutation of mutationsList) {
if (mutation.type === 'childList') {
console.log('A child node has been added or removed.');
}
else if (mutation.type === 'characterData') {
console.log('The text content of a node has changed.');
}
}
};
// 创建一个观察器实例并传入回调函数
const observer = new MutationObserver(callback);
// 以上面的配置开始观察目标节点
observer.observe(targetNode, config);
// 之后,可停止观察
// observer.disconnect();
问题: MutationObserver
回调函数没有执行。
原因:
解决方法:
问题: 性能问题,特别是在大型DOM树或频繁变化的情况下。
解决方法:
disconnect
方法停止观察。通过以上信息,你应该能够理解并使用MutationObserver
来监听<div>
元素内容的改变了。
领取专属 10元无门槛券
手把手带您无忧上云