- From: Marcos Caceres <w3c@marcosc.com>
- Date: Thu, 23 Feb 2012 11:21:07 +0000
- To: public-webapps <public-webapps@w3.org>
Hi, Would it be possible for DOM4 to define a way for user objects to be able to extend EventTarget (as in Object.create(EventTarget))? The use case: give the ability to create objects that can dispatch events using native means… instead of hacking around it like so: var obj = Object.create(null); var dispatcher = document.createElement("x-EventDispatcher"); //implement EventTarget interface on obj Object.defineProperty(obj, "addEventListener", { value: function(type, callback, capture){ dispatcher.addEventListener(type, callback, capture); } }); Object.defineProperty(obj, "removeEventListener", { value: function(type, callback, capture){ dispatcher.removeEventListener(type, callback, capture); } }); Object.defineProperty(obj, "dispatchEvent", { value: function(e){ dispatcher.dispatchEvent(e); } }); var e = document.createEvent('CustomEvent'); e.initEvent("myEvent", false, false, null); dispatcher.dispatchEvent(e); Also, AFAIK, all JS frameworks have implemented custom ways of handling events and how they are dispatched, so clearly its a desired part of the platform. For example: http://developer.yahoo.com/yui/docs/YAHOO.util.CustomEvent.html http://api.jquery.com/category/events/event-object/ http://dojotoolkit.org/reference-guide/quickstart/events.html Developers have also built their own: http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/ Other solutions fire at the document, which means registering listeners on an object that is not the one that needs to receive the event: http://tiffanybbrown.com/2011/10/12/dispatching-custom-dom-events/ So, together with CustomEvents provided by the platform, it would be nice to have a custom EventTarget to fire those things at :) Kind regards, Marcos -- Marcos Caceres
Received on Thursday, 23 February 2012 11:21:41 UTC