- From: Sebastian Zartner <sebastianzartner@gmail.com>
- Date: Fri, 8 Jan 2016 19:07:49 +0100
- To: Boris Zbarsky <bzbarsky@mit.edu>
- Cc: public-html@w3.org
- Message-ID: <CAERejNZXU81g_dBf2cMZpY8A_3AyTkFRQH-OYkhLXspdYMjxoQ@mail.gmail.com>
Sorry, for the delay! It took me a bit to find the time to investigate and
reply.
On 4 January 2016 at 09:10, Boris Zbarsky <bzbarsky@mit.edu> wrote:
> On 1/3/16 12:05 PM, Sebastian Zartner wrote:
>>
>> The event is dispatched on the disabled form element with the disabled
>> form element as target.
>
> OK. So we're talking about a fundamental change to the core DOM event
> dispatch algorithm here, right?
No, it's the same as you implemented in https://bugzil.la/218093. There the
mouse movement and pointer events are also dispatched on the disabled
element with it as target, right?
>> Firefox only triggers mousemove, mouseover and mouseout events.
>
> And mouseenter, mouseleave, and the equivalent pointer events. Further,
Firefox triggers event listeners for those on all the elements
> involved, including the disabled form control, not just on ancestors
right?
Right, except that pointer events are not enabled by default yet. (That's
one reason why my previous description was inaccurate. The second one was
that the bug summary wasn't changed to reflect the actual implementation.)
> As in, Firefox doesn't change the core DOM event dispatch algorithm; it
> simply doesn't fire some events in some cases in which one might expect
them
> to fire.
I guess that's also what the other browsers do.
>> Chrome and Opera trigger all events except mouseenter and mouseleave,
>> though not on <button>, <input type="radio"> and <input
>> type="checkbox"> elements.
>> Internet Explorer triggers all events.
>> Edge triggers no events at all. (looks like this has changed since my
last
>> mail)
>
> Given the inaccurate description of the Firefox behavior above, I'd really
> like to understand precisely what the behaviors of those browsers actually
> are...
Taking a JSFiddle[1] for testing I got the following results.
Legend:
'on ancestor' means an event listener is set on an ancestor while
interacting with the disabled form element.
'on form element' means an event listener is set on the form element itself
while interacting with the disabled form element.)
Chrome 47.0 / Opera 34.0
on ancestor on form element
pointerenter not supported not supported
pointerover not supported not supported
pointermove not supported not supported
pointerout not supported not supported
pointerleave not supported not supported
mouseenter no (not bubbling) no
mouseover only text, range,
textarea inputs
mousemove only text inputs, no
time, date, color,
range, textarea
mouseout only text, range, no
textarea inputs
mouseleave no (not bubbling) no
mousedown only text inputs, no
time, date, color,
range, textarea
mouseup only text inputs, no
time, date, color,
range, textarea
click only text inputs, no
time, date, color,
range, textarea
dblclick only text inputs, no
time, date, color,
range, textarea
contextmenu only text inputs, no
time, date, color,
range, textarea
Firefox 44.0b6[2]
on ancestor on form element
pointerenter no (not bubbling) yes
pointerover yes yes
pointermove yes yes
pointerout yes yes
pointerleave no (not bubbling) yes
mouseenter no (not bubbling) yes
mouseover yes yes
mousemove yes yes
mouseout yes yes
mouseleave no (not bubbling) yes
mousedown no no
mouseup no no
click no no
dblclick no no
contextmenu no no
IE 11:
on ancestor on form element
pointerenter no (not bubbling) no
pointerover yes no
pointermove yes no
pointerout yes no
pointerleave no (not bubbling) no
mouseenter no (not bubbling) no
mouseover yes no
mousemove yes no
mouseout yes no
mouseleave no (not bubbling) no
mousedown yes no
mouseup yes no
click yes[3] no
dblclick yes no
contextmenu yes no
Edge 25:
on ancestor on form element
pointerenter no (not bubbling) no
pointerover no no
pointermove no no
pointerout no no
pointerleave no (not bubbling) no
mouseenter no (not bubbling) no
mouseover no no
mousemove no no
mouseout no no
mouseleave no (not bubbling) no
mousedown no no
mouseup no no
click no no
dblclick no no
contextmenu no no
Sebastian
[1] https://jsfiddle.net/6kdu1pkh/
[2] Having the preference dom.w3c_pointer_events.enabled set to true
[3] click event is only sent on input type radio and checkbox when
double-clicking
Received on Friday, 8 January 2016 18:08:39 UTC