W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2011

Re: Mutation events replacement

From: Boris Zbarsky <bzbarsky@MIT.EDU>
Date: Tue, 05 Jul 2011 16:53:01 -0400
Message-ID: <4E1379AD.1070402@mit.edu>
To: Aryeh Gregor <Simetrical+w3c@gmail.com>
CC: public-webapps@w3.org
On 7/5/11 4:25 PM, Aryeh Gregor wrote:
> Maybe we don't want to give authors the ability to suspend mutation
> events at all, though, sure.

Indeed.

>> It would also be a good way to deoptimize jits (e.g. you have to actually
>> _have_ the function around to detect when it "exits", so if your jit does
>> inlining you have to turn that off or instrument it for functions that
>> contain that call) without realizing it.
>
> You'd have to add some extra instructions at every exit point of the
> function when you inline it, yes.  You'd have to do the same if you
> don't inline it, too.

Not necessarily; in the non-inlining case, removing the stack frame can 
just automatically do the work.

Unless you tail-recurse, in which case you don't remove the stackframe, 
of course....

> This doesn't seem prohibitive by itself, particularly given that functions where you'd use this will be doing
> multiple DOM modifications.

Maybe.  Maybe not.

> As far as I can see, the page can get repainted (meaning visually
> updated in response to DOM changes, not sure if my terminology is
> correct) in most browsers even when regular old scripts are running.
> When I write tests in JavaScript that do many seconds of DOM
> manipulation and add results to a table as they go, IE/Firefox/Opera
> all visibly start displaying results long before the tests are done
> running.

Unless your tests are explicitly yielding via setTimeout, that's quite 
odd in at least the Firefox case.

> But they probably don't want to do this in the middle of
> execCommand() execution, when the DOM is in some transient state that
> will display oddly for a moment and then flicker away.

It's not "a moment" if something happens in the middle of the 
execCommand that takes a while to complete and hits the network in the 
process.

The goal would be to not have such things happening in the middle of 
execCommand.

>> So if halfway through the mutation listeners for an execCommand one of the
>> listeners does a showModalDialog(), should the page the dialog comes from
>> stop painting until that dialog is dismissed?
>
> I wouldn't say so, no.  HTML5 seems to say that things like that
> should cause the UA to "pause", and the definition of that includes
> updating the rendering:
>
> http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#pause

OK, that much I agree on.  But then I can't tell what you're proposing.

-Boris
Received on Tuesday, 5 July 2011 20:53:43 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:46 GMT