Re: Click event on button element when event targets of the associated mousedown and mouseup are different

On 04/15/2011 03:44 AM, Ryosuke Niwa wrote:
> Greetings all,
>
> 5.2.3.2. Mouse Event Order
> <http://www.w3.org/TR/DOM-Level-3-Events/#events-mouseevent-event-order> has
> the following statement:
>
> in general should fire |click|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-click> and|dblclick| <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-dblclick> events
> when the event target of the associated |mousedown|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mousedown> and
> |mouseup|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mouseup> events is
> the same element with no |mouseout|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mouseout> or
> |mouseleave|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mouseleave> events
> intervening, and should not fire |click|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-click> and
> |dblclick|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-dblclick> events
> when the event target of the associated |mousedown|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mousedown> and
> |mouseup|
> <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mouseup> events is
> different.
>
> Unfortunately, this convention leads to the WebKit bug 39620
> <https://bugs.webkit.org/show_bug.cgi?id=39620>.

Nope, it is not the DOM 3 Events definition of click which leads to that 
bug. It is the hit testing. In Firefox hit testing leads mouse events to 
be dispatched to button element and click event dispatching to
work per the spec also in this case.


>  In this bug, we have
> the following markup:
>
> <button> www <span> DOM </span> level 3</button>
>
> and user
>
>  1. mousedown on DOM
>  2. mosemove to www / level 3
>  3. mouseup in www / level 3
>
> WebKit currently does not fire click event on the button element per
> spec. However, Firefox fires mouseup, mousedown, and click events on the
> button element (it doesn't seem to ever fire mouseup, mousedown, click
> events on descendents of a button element), and Internet Explorer seems
> to always fire click event on the lowest common ancestor of target nodes
> of mouseup and mousedown.
>
> I personally think Internet Explorer's behavior is most desirable
> because user shouldn't have to worry about element boundaries when
> clicking on something.
Hmm, yeah IE's behavior might be good in general, but
hit testing on button element should still be defined somewhere (not
D3E) - atm hit testing isn't defined anywhere.


-Olli

>  And websites that want old behavior can always
> compare the target nodes of the associated mousedown/mouseup events and
> drop the ones that don't match up.
>
> Does anyone know why the said statement was added to the spec?  Are
> there any websites that break if WebKit changed the behavior?
>
> Best,
> Ryosuke Niwa
> Software Engineer
> Google Inc.
>
>

Received on Friday, 15 April 2011 09:55:03 UTC