W3C home > Mailing lists > Public > www-dom@w3.org > April to June 2011

Re: Functions that Implement the EventListener Interface (DOM Level 3 Events)

From: Rob Brackett <rbrackett@apple.com>
Date: Thu, 23 Jun 2011 15:25:13 -0700
Cc: "Olli@pettay.fi" <Olli@pettay.fi>, "www-dom@w3.org" <www-dom@w3.org>, Jacob Rossi <jrossi@microsoft.com>
Message-id: <8C7C09F7-6B51-43CE-8179-B90CCA9AC49B@apple.com>
To: Jonas Sicking <jonas@sicking.cc>

On Jun 23, 2011, at 12:13 PM, Jonas Sicking wrote:

> On Wednesday, June 22, 2011, Cameron McCormack <cam@mcc.id.au> wrote:
>> Olli Pettay:
>>> D3E could be clarified, but seems like this is anyway defined in WebIDL.
>> I agree, it is defined in Web IDL.  I remember changing the order in
>> which the handler is checked for (between the property and the function
>> itself) some time ago, due to feedback.
>> Here is a test:
>> http://people.mozilla.org/~cmccormack/tests/eventlistener-property.html
>> The first sub-test is doing
>>  addEventListener(, { handleEvent: function() {  } }, );
>> and the second sub-test is doing
>>  function b() {  }
>>  b.handleEvent = function() {  };
>>  addEventListener(, b, );
>> The results are that every browser invokes the handler in the first
>> sub-test, and for the second sub-test, Firefox/Chrome/Opera/IE use the
>> function object itself, while Safari uses the property.
>> I agree that preferring the property makes some sense to me (especially
>> if you consider JS implementing an interface with more than one
>> operation on it), but the change was made to match the implementations.
> It is also more performant to execute the function rather than the
> property since that way you cam do decide which to use at registration
> time, rather than each time the callback is called.

That does seem like it might be slightly faster for very hot code. It's just frustrating, as a content author, that it's a little unpredictable and that it removes the easy ability to have "this" point to my object instead of to the DOM node that fired the event.

Received on Thursday, 23 June 2011 22:25:39 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 20 October 2015 10:46:17 UTC