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

Re: ECMAScript binding for EventListener

From: Dylan Schiemann <dylans@yahoo.com>
Date: Thu, 14 Jun 2001 19:07:19 -0700 (PDT)
Message-ID: <20010615020719.52886.qmail@web13507.mail.yahoo.com>
To: Johnny Stenback <jst@netscape.com>, David Flanagan <david@oreilly.com>
Cc: www-dom@w3.org

--- Johnny Stenback <jst@netscape.com> wrote:
> 
> 
> David Flanagan wrote:
> 
> > In the Level 2 DOM, the ECMAScript binding for the
> EventListener
> > interface is simply a function reference.
> > 
> > While this is very convenient for JavaScript
> programmers, it sacrifices
> > the power that comes with treating EventListener
> as a true object.
> > Specifically, the current binding allows us to
> register only functions
> > as event handlers, and does not allow us to
> register object methods as
> > handlers.  (Mozilla currently invokes any event
> handler function you
> > register as a method of the event target.)
> > 
> > I'd like to propose that the next edition of the
> specification broaden
> > the ECMAScript binding so that EventListener may
> be either a function or
> > an object.  If an object o is registered, it must
> have a property named
> > handleEvent that contains a function reference. 
> When the appropriate
> > event occurs, this function is invoked _as a
> method of the object o_.
> > 
> > As a trivial example, I ought to be able to write
> code like this:
> > 
> > 	element.addEventListener("click",
> > 		   { 
> > 		      message: "Hello world",
> > 		      handleEvent: function(e) {
> alert(this.message); }
> >                    },
> > 		   false);
> > 
> > Anyone have thoughts about this?
> > 
> 
> 
> For the record, this already works in recent
> versions of mozilla (and 
> Netscape 6.1 beta).
> 

Yes, it actually does.  Though something like:

function EventCaptureClass()
{

}

function addEventListeners(element)
{    
element.addEventListener("click",this.singleClick,false);
}

EventCaptureClass.prototype.addEventListeners =
addEventListeners;

function singleClick(e)
{
   alert(this); // this = element, not the instance of
the singleClick method.
}

EventCaptureClass.prototype.singleClick = singleClick;

would be greatly served by David's suggestion.

-Dylan Schiemann
http://www.sitepen.com/
http://www.dylanschiemann.com


__________________________________________________
Do You Yahoo!?
Spot the hottest trends in music, movies, and more.
http://buzz.yahoo.com/
Received on Thursday, 14 June 2001 22:07:20 GMT

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