Re: Exceptions in event listeners triggered by dispatchEvent().
"Simon Pieters" <[email protected]>
| Newsgroups | gmane.comp.web.dom.general |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 07 Jun 2013 15:40:09 +0200, Glenn Maynard <[email protected]> wrote: > On Fri, Jun 7, 2013 at 8:09 AM, Simon Pieters <[email protected]> wrote: > >> Well then those browsers violate the spec and the original >> implementation... At least Presto implements the spec. > > > When IE, Chrome and Firefox all violate the spec in the same way, it's > the > spec that's wrong. You know that. Yeah. >> (The spec looks incorrect here. It bypasses event dispatch entirely >> and >>> calls "onerror" directly, which forgets to fire event listeners. It >>> also >>> doesn't make much sense to support error handling with event listeners >>> in >>> workers but not in the UI thread. This should probably just fire an >>> ErrorEvent, and the window.onerror special case should probably be in >>> the >>> event dispatch algorithm.) >>> >> >> You misunderstood the worker case. Errors in workers are handled the >> same >> as in window, i.e. onerror is invoked directly. However, if a worker >> error >> is not "handled", an ErrorEvent gets fired on the Worker object. > > > Sorry, I don't follow and I don't believe I'm misunderstanding anything. You said: >>> It also >>> doesn't make much sense to support error handling with event listeners >>> in >>> workers but not in the UI thread But the spec currently doesn't support error handling with event listeners in workers. When a runtime error occurs in a worker, the following happens, per spec: 1. self.onerror is invoked (without an event). 2. If the error is "handled", abort these steps. 3. Otherwise, create an ErrorEvent object and fire it on the associated 'Worker' object in the parent thread. (It can then "bubble" further if it's still not "handled", but ErrorEvent is only fired for Worker objects, not Window or WorkerGlobalScope.) Anyway, I guess this was just a tangent. I don't object to changing the spec as you suggest. > The above describes the *non*-worker behavior. > http://www.whatwg.org/specs/web-apps/current-work/#report-the-error -- Simon Pieters Opera Software