Bug 214609

Summary: Safari on iOS fires "pointerenter" with mouse pointerType in addition to touch
Product: WebKit Reporter: Devon Govett <govett>
Component: UI EventsAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: graouts, thorton, webkit-bug-importer, wenson_hsieh
Priority: P2 Keywords: InRadar
Version: Safari 13   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=210716

Description Devon Govett 2020-07-21 11:55:19 PDT
When you have an element with a `tabIndex`, Safari on iOS fires the "pointer enter" and "pointerleave" events twice: once with `pointerType` set to "touch", and again with `pointerType` set to "mouse". After touching and releasing the element, the events fired are:

* pointer enter: pointerType = "touch"
* pointer leave: pointerType = "touch"
* pointer enter: pointerType = "mouse"

A pointer leave event with pointerType = "mouse" is not fired until the element is blurred (e.g. by tapping on something else that's focusable). Based on this information, it appears that focus/blur events are also causing pointer enter/pointer leave events.

You can try this out in a demo here: https://codepen.io/devongovett/pen/QWyYWYa
Comment 1 Radar WebKit Bug Importer 2020-07-21 13:28:24 PDT
<rdar://problem/65899993>
Comment 2 Wenson Hsieh 2020-07-21 14:30:06 PDT
> * pointer enter: pointerType = "touch"
> * pointer leave: pointerType = "touch"
> * pointer enter: pointerType = "mouse"

These seem like events that would be fired when dispatching synthetic click events, which should be fixed in the iOS 14 beta.