smaug wrote:
> On 10/11/2012 02:40 PM, Paul Rouget wrote:
> >Context: in the firefox devtools, we need to track some nodes and update
> >different "views" based on what's happening to this node (show its parents,
> >show its child, show its attributes, …).
> >
> >The new Mutation observers are very helpful. But there's one thing I am not
> >really sure how to handle correctly .
> >
> >When a node gets detached (parent.removeChild(node)) or reparented, I need to
> >be notified.
> >
> >My current idea is to listen to "childList" mutations from the parent,
> >then, on this mutation, check if the node is still part of the children of
> >the parent, if not, check if it has a parent, if so, the node has been
> >*relocated*, then I need re-listen to a "childList" mutation from this
> >new parent, if no parent, the node has been *detached*.
> 
> Why do you need to re-listen anywhere?
> You get the node in a MutationRecord and when the callback is called you 
> check where it is.
> ( node.contains can be useful and certainly faster than anything in JS. )
> If the node doesn't have parent, it is detached.

I didn't know about Node.contains.

Something I didn't consider: what if an ancestor of the node is detached?

So what if I do that:
- listen to document.documentElement childList mutations
- in the callback, check if the node is still attached (with 
compareDocumentPosition)

the problem is that I'll need to call compareDocumentPosition every time there's
a childList mutation in the whole document.

-- Paul
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to