[whatwg] createEvent() in Web Workers?
Simon Pieters
simonp at opera.com
Fri Nov 27 08:02:00 PST 2009
On Fri, 27 Nov 2009 16:50:21 +0100, Jonathan Cook
<jonathan.j5.cook at gmail.com> wrote:
> Simon Pieters wrote:
>> There's ErrorEvent.initErrorEvent, and dispatchEvent is exposed in
>> workers, but there's no createEvent (because there's no document). Are
>> there use cases for sending events in a worker? Should we expose
>> createEvent somewhere? Should we remove initErrorEvent?
> I would like to see createEvent in WebWorker. My (theoretical) use case
> would involve using custom eventing to load or set new message
> handlers. Flow would be something like this
>
> window A creates worker 1
> window A sends message to worker 1
> worker 1 sends message to window A
> window A sends message to worker 1
> worker 1 creates an event "switch" in response to message, passing the
> message in the event: createEvent("switch",message)
> worker 1 switch event handler loads / sets new message handler, mutating
> itself into worker 1 sub 1 and calls the new message handler on the
> passed message
> worker 1 sub 1 sends message to window A
>
> Anyone think this theoretical use case or some derivative is a useful
> abstraction to aid in code organization and flow control? I would think
> since an eventing queue is specified for message handling that adding
> custom events would not be much additional effort for implementers.
>
> initErrorEvent would seem to put the DOM Events Level 3 createEvent and
> initEvent methods together. Is there a reason that this approach was
> chosen instead of mirroring DOM Events? The simple answer seems to be
> because there is no DOM :)
An idea for creating events is to support [Constructor] on all event IDLs,
which makes the createEvent method unnecessary.
Maybe we could even make the arguments to the constructor be called to
initFooEvent() directly, so instead of doing
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', ...);
foo.dispatchEvent(e);
you could do
foo.dispatchEvent(new MouseEvent('click', ...))
I've cc-ed www-dom since this is a suggestion for a change to DOM Events.
--
Simon Pieters
Opera Software
More information about the whatwg
mailing list