如何确定MutationRecord中removedNodes的原索引位置
MutationObserver中removedNodes相关问题解答
问题1:当MutationRecord的removedNodes含多个节点时,能否安全假定这些节点在移除前都位于DOM树中该记录的previousSibling和nextSibling之间?
完全可以。当多个节点出现在同一条removedNodes集合里时,它们在原DOM树中必然是连续相邻的一组节点。previousSibling就是这组节点的前一个兄弟节点(如果这组节点在父节点子列表的最开头,previousSibling为null),nextSibling则是这组节点的后一个兄弟节点(如果在子列表最末尾,nextSibling为null)。
问题2:若被观察节点的多个非相邻子节点被移除,是否会生成多个MutationRecord?
是的。浏览器会为每一组连续相邻的被移除节点生成单独的MutationRecord。举个例子:如果移除父节点里的第1、3、4个子节点,会生成两条记录——一条对应单独的第1个节点,另一条对应连续的第3、4个节点。
问题3:若问题1成立,能否安全假定removedNodes数组的节点顺序与原父节点childNodes中的顺序一致?
可以放心这么做。removedNodes数组里的节点顺序,和它们在原DOM树父节点childNodes列表中的顺序完全一致,也就是从前到后的原有排列顺序。
内容的提问来源于stack exchange,提问作者Kuba Jagoda
相关产品推荐
相关产品推荐

