E1.02.3missing pressed state设计研究

缺失按下态会导致重复点击

别名: 无按压反馈 · 连点 · duplicate click

概念解释

按下态(pressed / active state)是手指或指针还按着时,按钮给出的「接触已被接住」的证据。它不报告任务做完了,只报告这一次按被采样了。缺了它,用户在抬手之前没有任何属于这次动作的回执,最常见的补偿是再点一次。重复点击在这里不是性急,而是因果链在触发器上断开之后的合理补救。

机制

人对「我按了所以它应立刻有反应」的时间窗很短。按下态卡在接触开始到抬起之间,正好填进这个窗:位移、变暗、涟漪都把动作和控件暂时焊在一起。若从接触到下一帧外观仍是默认态,感知系统会把这次接触判成未命中——尤其在触摸上,手指挡住了控件,连那一帧的微小变化也看不见。未命中的补救是第二次按。网络再慢一点,第二次按会在第一次请求尚未上锁之前发出,于是重复提交、重复下单、重复发送。按下态防的是「还没等到加载态就再点」这一段空窗;加载锁防的是另一段。两段都可以制造连点,但缺口不同。

怎么研究

在同一次点击任务里操纵按下态:有 / 无,以及按下态是否被手指模型遮住。记录从第一次接触到第二次接触的间隔,以及是否发出两次请求。

自变量:按下态有无、按下态出现延迟、目标是否被遮挡、后续加载态出现的时间。 因变量:二次点击率、两次点击间隔、误以为未点中的口头报告。

把按下态延迟到抬起之后再出现,等于没有按下态——它已经变成了结果反馈。实验必须把「按住期间的变化」和「抬起后的变化」分开计时。触屏应用指尖遮挡层,鼠标则不必。

边界

机械键盘和实体按钮自带行程与触觉,屏幕按下态的缺失可以被硬件回执补上;虚拟键盘和纯触屏没有这条退路。游戏里的连发是功能,不是缺陷,应按住重复触发来设计,并显式显示连发。若系统在 pointerdown 就发出请求,没有按下态仍可能只发一次——但用户不知道,仍会再点,于是问题从「双请求」变成「双请求加用户困惑」。无障碍开关设备用停留来激活,没有「按下期间」,需要另一套进行中指示,不能照搬按下态。

怎么落地

  • 在 pointerdown / touchstart 立刻切换按下外观,不要等鼠标抬起或等服务器。
  • 触摸上让按下变化出现在指尖遮挡范围之外(外扩高亮、按钮整体下移),避免变化发生在看不见的地方。
  • 不要用加载态顶替按下态:加载可以晚几十到几百毫秒,按下必须在接触当帧。
  • 验证:在真机上对提交按钮连拍接触,看请求日志。若第一次接触后外观未变且短间隔内出现第二次请求,就是缺按下态在制造连点。

延伸

  • 同组E1.02.1 默认、悬停、按下、禁用、加载五态需完备 · E1.02.2 状态间的视觉差异需大于噪声
  • 相邻D1.01 操作即时反馈 · D1.06 按压态 · E1.09 加载中按钮
  • 站内检索pressed state · active state · repeated click

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E1.02.3