【发布时间】:2014-12-10 10:00:59
【问题描述】:
由于touchstart、tap和300ms延迟点击之间的冲突,制作一个好的快速响应网站相对困难。
当然vclick 应该解决这些问题,但他们似乎也无法完全解决这些问题。来自文档:
警告:谨慎使用 vclick
在触控设备上谨慎使用 vclick。基于 Webkit 的浏览器 在大约 300 毫秒后合成 mousedown、mouseup 和 click 事件 touchend 事件被调度。合成鼠标的目标 事件是在它们被调度时计算的,并且基于 触摸事件的位置,在某些情况下, 实现特定的启发式,导致不同的目标 不同设备甚至不同操作系统版本上的计算 相同的设备。这意味着原始元素中的目标元素 触摸事件可能与 合成鼠标事件。
我们建议在任何时候使用 click 而不是 vclick 触发有可能改变下面的内容 在屏幕上触摸的点。这包括页面转换和 其他可能导致 屏幕移动或内容被完全替换。
现在我正在考虑做一些更简单的事情。每当触发 touchstart 事件时,我都知道这是肯定的触摸设备。我只是禁用所有点击事件,然后开始监听 touchstart(或点击)事件only。忽略 300 毫秒的延迟点击事件。
当然也有带有鼠标和触摸的设备,但同时使用这些的人对我来说似乎是少数。
这是个好主意,还是我的想法中遗漏了什么?
【问题讨论】:
-
我认为使用打开屏幕来检测触摸事件是否可用是可以的,但在 UX 方面有一些缺点。例如,如果用户触摸屏幕但没有移开手指,则您可能已经触发了该事件,并且正如您所建议的那样,聆听点击事件会更好。为此,我个人使用自定义点击/触摸包装器。它检测触摸开始(如果可用)并相应地管理触摸开始/移动/结束。
-
触摸屏笔记本电脑正在成为 Windows 世界的常态,因此您需要注意不要为这些用户破坏您的网站。
标签: javascript mobile touch