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.

-Rob
Received on Thursday, 23 June 2011 22:25:39 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 22 June 2012 06:14:07 GMT