- From: David Flanagan <dflanagan@mozilla.com>
- Date: Fri, 01 Jul 2011 12:05:08 -0700
- To: Ryosuke Niwa <rniwa@webkit.org>
- CC: Boris Zbarsky <bzbarsky@mit.edu>, public-webapps <public-webapps@w3.org>
- Message-ID: <4E0E1A64.5010406@mozilla.com>
On 6/30/11 5:43 PM, Ryosuke Niwa wrote: > On Thu, Jun 30, 2011 at 5:16 PM, Boris Zbarsky <bzbarsky@mit.edu > <mailto:bzbarsky@mit.edu>> wrote: > > On 6/30/11 7:01 PM, Ryosuke Niwa wrote: > > What do you mean by it being partially inserted? Like document > relationship, etc... aren't consistent? > > > That would be one example, yes. Firing mutation events as you go > involves making those relationships consistent at every step of a > multipart mutation, whereas in some situations it may be simpler > and faster to have intermediate inconsistent states. > > > Yeah, I hear you. It's particularly painful in the editing world > where we have to make multiple DOM mutations. > > I'd really like to know if having a list of mutations will address > David's use case. > > - Ryosuke > I don't think I really explained my use case on this list. See https://bugzilla.mozilla.org/show_bug.cgi?id=641821#c23 and https://bugzilla.mozilla.org/show_bug.cgi?id=641821#c25 The sketch that Rafael has provided does look like it would address my needs. Not because all the mutations are batched into a single list (though that seems like the most important feature of his proposal) but because his example has finer granularity than what Jonas and Olli have proposed: Rafael's sample mutationList array provides arrays of inserted and removed nodes rather than just providing notification that the child list has changed. Rafael's proposal seem harder to specify and implement, since it defines a data structure rather than just a sequence of events, but it does seem compelling. I have not yet grokked what it is that triggers a batch of mutatiions to be sent out, but if that aspect of the proposal is not problematic, I love the array of fine-grained mutation details part. I suspect that there are a number of useful refinements that could be made to the mutationList details. For example, a "ChildListReplaced" type would be nice when all the children of an element are blown away by setting innerHTML or textContent. Similarly, I've found it important to be able to distinguish between nodes that are being removed from a document tree and nodes that are being moved within the document tree, and it would be good if the mutationList were defined in such a way that these two cases could be distinguished. Implementations will presumably maintain one list of all current mutations, and then will have to filter that list to deliver only those that match the desired type and desired subtree for which a listener is registered. I'd suggest, therefore that mutationList not be an array but something more like an iterator or cursor with a next() method so that implementations don't have to pretend that this lazily filtered list is actually an array-like object. David
Received on Friday, 1 July 2011 19:05:43 UTC