Re: Exceptions in event listeners triggered by dispatchEvent().

On Mon, Jun 17, 2013 at 2:27 PM, Ian Hickson <ian@hixie.ch> wrote:
> On Mon, 3 Jun 2013, Jonas Sicking wrote:
> >
> > I think it would be great if dispatchEvent dispatched the event at
> > end-of-microtask or some such.
>
> The usual pattern when dispatching an event is:
>
> <something happens>
> dispatch an event to notify user code!
> was the event canceled? if not, do the default action
>
> It would be weird if this wasn't synchronous. I'm not really sure how you
> would do the default action. Certainly it would mean that the default
> action was no longer in the same task as the <something happens>, which is
> weird. Think about browser events (either by analogy or as a concrete
> example, depending on whether you'd want this to apply to all events or
> only those dispatched from script): you click on a checkbox, its .value
> changes, an event is fired, and if it's canceled, the .value is changed
> back. It'd be pretty weird if this happened asynchronously.
>
Check-boxes are changed asynchronously (by XHR processing) all of the time.
On the other hand, the control flow options in dispatchEvent() are --
compared to the rest of JS -- weird. With preventDefault any handler can
block one special kind of action. With stopPropagation any handler can
block a subset of other handlers.
These feature are valuable, but if we're talking weird JS control flow,
they are weird.
(If we have a 'cancelable' flag allowing the dispatching caller to grant a
handler the ability to preventDefault, I don't understand why we can't have
a 'unexceptional' to grant handlers the ability to stop all handlers and
throw in the caller.)
jjb

Received on Monday, 17 June 2013 22:38:51 UTC

AltStyle によって変換されたページ (->オリジナル) /