关于MutationRecord属性未针对AddedNodes/Children设置的技术咨询
关于MutationRecord属性未针对AddedNodes/Children设置的技术咨询
嘿,你的观察完全准确!MutationObserver的属性监听逻辑本来就不会把新增节点自带的属性纳入MutationRecords里——它只追踪已存在于DOM中的节点发生的属性变更操作。你看到新增<P>元素时没有属性相关记录,就是这个原因。
针对你的疑问,我来给你捋清楚:
- 如果想要获取新增元素的属性或dataset,确实得直接去访问这个节点的
attributes或者dataset属性,这是目前最直接有效的方式。 - 至于RemovedNodes的情况,确实会棘手一些:节点被移除后,你虽然能在MutationRecord里拿到它的引用,但要是没提前缓存它的属性信息,就得在拿到RemovedNodes的第一时间读取属性(只要节点还没被浏览器垃圾回收,就能正常访问)。
另外给你个小建议:如果需要同时监听节点增减和属性变化,可以把MutationObserver的配置里childList和attributes都设为true,然后在回调函数里区分处理——碰到新增节点就主动读取属性,碰到属性变更就处理已存在节点的改动。
备注:内容来源于stack exchange,提问作者McMurphy
相关产品推荐
相关产品推荐

