- From: Kyle Huey <me@kylehuey.com>
- Date: Thu, 24 May 2012 20:38:48 -0700
- To: Glenn Maynard <glenn@zewt.org>
- Cc: whatwg@whatwg.org, contact@xavierho.com, Jason Edward 今井 Parrott <parrott.jason@gmail.com>
On Thu, May 24, 2012 at 8:27 PM, Glenn Maynard <glenn@zewt.org> wrote: > Making event listeners enumerable would remove that property. > As I read it, he is not asking to enumerate event listeners. Simply to know if there are any for the event in question. Something like partial interface EventTarget { boolean hasEventListener(DOMString type); }; > On Thu, May 24, 2012 at 10:07 PM, Xavier Ho <contact@xavierho.com> wrote: > > > A very common use-case is to record a mouse click on a DOM element which > > may fire an event on the page. We want to capture clicks that actually > > triggered an event, does a HTTP request, and so on, but not meaningless > > clicks on an empty region. > > > > That said, there is no way of surely determining if a click is > meaningful. > > We check if the DOM element clicked on is a button, a link (has href), > has > > onclick attribute set, and so on. However, this will fail on sites that > > binds 'click' via 'addEventListener' on a strange element, like a <span> > or > > a <em> tag. > > > > This will also fail if the event handler is up the node tree. That's very > common with the event delegation pattern, where a capturing event listener > for is registered for a container object (even on the document). You have > no way of knowing whether it'll actually do anything for any particular > element. I don't think this is a realistic use case. > Yes, you would need to check the entire event dispatch chain for listeners. At that point it may be easier just to fire the event and let the browser figure it out. It's also possible that event dispatch of an event that never "heard" by script in the page can trigger dispatch of an event that is "heard" by script. For example, a click event that bubbles to a <label> element generates a synthetic click event on whatever the <label> points to. It is possible for a page to have no event listeners that see the first click, but have event listeners that see the second. I think you really need to let the browser run event dispatch for all events here. - Kyle
Received on Friday, 25 May 2012 03:39:19 UTC