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

On 04/15/2011 12:54 PM, Olli Pettay wrote:
> 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.

I could still add that the reason for Firefox's behavior is HTML 4 spec
"Buttons created with the BUTTON element function just like buttons 
created with the INPUT element, but they offer richer rendering 
possibilities"


-Olli



>
>
>> 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:59:37 UTC