J3.13.1activation on up-eventdesignresearch

Fire on release, not press, so the pointer can still cancel

Aliases: up-event activation · abort by sliding off · pointer cancellation

What it is

A pointer down on a target is not yet a promise. The command runs on up only if the pointer is still inside. After down, the pointer can slide out of the hit target and release; the act is void. That is activation on release, so the person can cancel mid-way. Fire on down, and there is no time to slide. A landing error is already a command.

Why it happens

A click splits in time into down and up. Bind execution to down, and the cancel window is zero: state has already changed on contact. Bind it to up, and the movement between down and up is an escape hatch—up outside the target means no activation. People with unstable motor control often notice the miss only after they have pressed. The hatch uses the contact that already exists; it does not demand a second aim.

This safeguard is for “I pressed on the target and then decided to abort.” It is not about a scroll that merely crossed a button, and it is not about recovering a result that already committed. Down-event firing deletes cancel from the act and leaves only after-the-fact repair.

Studying it

On a tappable control, log whether the control is still under hit-testing at pointerdown, pointerup, and click, and whether the pointer left the target between down and up. Compare down-bound versus up-bound implementations on slide-off cancel success.

Independent variables: which event commits, whether the hit target matches the paint, whether listeners remain after a slide-out. Dependent variables: activations after a slide-off, rate at which abort intent is honoured.

Use a real pointer. Synthetic click() will miss custom controls that listen only to mousedown.

Where it stops holding

Hold-to-run interactions (a piano key, walkie-talkie, game fire) start on down and end on up; do not rewrite them as “sound only on release.” A drag’s down is the start of the drag, not a commit. Keyboard activation usually fires on keyup or a synthesized click, a different timeline from pointer down/up. In a very short tap, down and up nearly coincide, so the window is small—but it must still exist: up outside must not run.

Applying it

  • Put button, link, and submit side effects on pointerup or click (the browser’s up-time synthetic), not on pointerdown or touchstart.
  • Hit-test again on up: if the pointer has left, do not run. Clear the pressed visual on slide-out so the person sees the abort.
  • Verify: press on a button, slide outside, release. Any submit, expand, or playback that already happened means the binding was down.

Related

  • Same group: J3.13.2 Buttons passed during a scroll or drag must not count as clicks · J3.13.3 Double-tap and long-press succeed less often when motor control is limited · J3.13.4 After a miss-tap, recovery should be one undo, not repeating the whole flow
  • Nearby: J3.09 Accidental Activation and Undo · A11.03.7 Handling hand tremor with touch debounce and mis-tap filtering
  • Search terms: pointer cancellation · up-event · activation on release

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/J3.13.1