- From: Anne van Kesteren <annevk@opera.com>
- Date: Tue, 15 Feb 2011 11:20:48 +0100
- To: "WebApps WG" <public-webapps@w3.org>
- Cc: www-dom@w3.org
As I mentioned at TPAC I wanted DOM Core to include the fundamentals of
events[1]. As with the rest of DOM Core I have attempted to write it from
scratch loosely based on testing browsers and the existing DOM Events
specifications. Glenn Maynard helped out with some details.
http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#events
This is a rough overview of what changed since DOM Level 2 Events/DOM
Level 3 Events:
* It is clearer what attributes of an event return at any point during
the existence of an Event object. E.g. what does ev.type return if ev =
document.createEvent("event"). Or what does ev.eventPhase return at any
point in time? Now defined.
* There are no more restrictions on Event.type. Gecko allows the empty
string and I do not see a good reason to add extra checks to prevent that.
* This makes invoking initEvent() optional.
* I have allowed for initEvent() to be invoked before and after
dispatching. It will unset the trusted flag. There did not seem a need for
a restriction other than during a dispatch.
* I have made initEvent() arguments other than the first optional. Making
it slightly more convenient to use.
* Propagation and canceled state are cleared before dispatching rather
than after. Otherwise defaultPrevented would be affected.
* I changed the details around cancelable events to make more sense. Only
with cancelable events will invoking preventDefault() have an effect.
Browsers were not really in alignment here.
* This also means that the return value of dispatchEvent will be false if
preventDefault() was called on a non-cancelable event.
* Removed the need for EventException.
Overall I feel it is a much more straightforward definition of the events
model.
Feedback appreciated!
[1] Part of the reason was that mutation events could eventually be
defined directly by the methods that trigger them hopefully making it much
less opaque how they actually work. Now I have not actually gotten around
to specifying mutation events just yet. Another reason is that now Node
can easily inherit from EventTarget. I believe we wanted to do that, right?
--
Anne van Kesteren
http://annevankesteren.nl/
Received on Tuesday, 15 February 2011 10:22:26 UTC