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