On Wed, Mar 6, 2013 at 5:36 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote:
> On 3/6/13 5:05 PM, Dimitri Glazkov wrote:
>
>> * attributeChangedCallback -- synchronously called when an attribute
>> of an element is added, removed, or modified
>>
>
> Synchronously in what sense? Why are mutation observers not sufficient
> here?
> * insertedCallback -- asynchronously called when an element is added
>> to document tree (TBD: is this called when parser is constructing the
>> tree?)
>>
>
> Again, why is this not doable with mutation observers?
"inserted" and "removed" can probably be end of micro task, but
attributeChanged definitely needs to be synchronous to model the behavior
of <input type> where changing it from X to Y has an immediate effect on
the APIs available (like stepUp).
MutationObservers are not sufficient because childList mutations are about
children, but you want to observe when *yourself* is added or removed from
the Document tree. There's also no "inserted into document" and "removed
from document" mutation records, and since ShadowRoot has no "host"
property there's also no way to walk up to the root to find out if you're
actually in the document. (Dimtiri should fix this... I hope).
The ready callback should probably also be synchronous (but at least it
happens in script invocation of the new operator, or after tree building),
since you want your widget to be usable immediately.
- E