MutationObserver.takeRecords() - Web API 接口参考 编辑
MutationObserver
的 takeRecords()
方法返回已检测到但尚未由观察者的回调函数处理的所有匹配DOM更改的列表,使变更队列保持为空。 此方法最常见的使用场景是在断开观察者之前立即获取所有未处理的更改记录,以便在停止观察者时可以处理任何未处理的更改。
语法
mutationRecords = mutationObserver.takeRecords()
参数
无。
返回值
返回一个MutationRecord
对象列表,每个对象都描述了应用于DOM树某部分的一次改动。
注意: 调用takeRecords()
后,已发生但未传递给回调的变更队列将保留为空。
示例
下面的示例展示了在断开观察者之前如何通过调用takeRecords()
来处理任何未传递的MutationRecord
。
var targetNode = document.querySelector("#someElement");
var observerOptions = {
childList: true,
attributes: true
}
var observer = new MutationObserver(callback);
observer.observe(targetNode, observerOptions);
/* ...later, when it's time to stop observing... */
/* handle any still-pending mutations */
var mutations = observer.takeRecords();
if (mutations) {
callback(mutations);
}
observer.disconnect();
代码中第12-17行抓取了所有未处理的变更记录,然后调用回调,并将变更记录列表传递给回调,以保证所有变更记录都被处理。这是在调用disconnect()
之前完成的,以便停止观察DOM。
规范
规范 | 状态 | 批注 |
---|---|---|
DOM MutationObserver.takeRecords() | Living Standard |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论