Skip to content

Suggest adding a firesHoverEvents property or some way to detect that in active input device supports hover? #39

@mattrq

Description

@mattrq

Suggests that a firesHoverEvents boolean is added to allow accurate handling of different pointer-based input devices.
There are a number of benefits that this allows for by allowing to changing the behaviour based on the support for hover for user interaction and better accessibility handling.

The current methods to detect hover support are not always accurate:

  1. Using CSS media queries: The cross-browser support and reliability of those are mixed. A negative query may indicate no support for the query or the current device doesn't support hover.
  2. The PointerEvent.pointerType can help by making assumptions for "mouse" (hover supported) and "touch" (hover unsupported), however "pen" may or may not support hover depending on the type of pen in-use.
  3. Assuming that fireTouchEvents===true means that hover is unsupported. However, this is not officially documented and unclear if it is an accurate assumption.

Example scenarios:

  • Laptop with touchscreen, mouse and trackpad.
  • Laptop with a touchscreen with pen support, mouse and trackpad.
  • Computer with a mouse and then digitizer tablet/pen (e.g. Wacom pen tablets) added after page load.
  • Laptop with mouse and trackpad but hover disabled for accessibility.
  • Tablet with mouse added.

Additionally, clarification on which events are intended for which capabilities?
e.g. (Not accurate)

Event On Event Handler firesHoverEvents TRUE firesHoverEvents FALSE firesTouchEvents TRUE firesTouchEvents FALSE
pointerover onpointerover    
pointerenter onpointerenter
pointerdown onpointerdown
pointermove onpointermove ✓ While down ✓ While down
pointerup onpointerup
pointercancel onpointercancel
pointerout onpointerout    
pointerleave onpointerleave

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions