RT
javascript 不用定时器能否判断出单击和双击事件,想了很久都需要操作到时间有关的东西
javascript 不用定时器能否判断出单击和双击事件,想了很久都需要操作到时间有关的东西
|
cydysmJun 14, 2019 via iPhone
1
你是说防抖?
|
|
xiaopcJun 14, 2019 via Android
2
ondblclick event?
|
|
5
也不能用到任何时间有关的。。。这个题目实在想不出解决方案
|
|
xiangyuecnJun 14, 2019
7
怎么会想到用定时器?不应该第一个想到:记录每次单击的时间,然后判断两次单击间的时间间隔么?
分享一下我的理解: 双击===同一位置短时间内的两次单击。记录每次单击的时间,如果这次单击距离上次单击的间隔很短,并且点击坐标在同一位置,说明是双击 这里所说的 单击===同一位置按下和弹起,并且没有发生移动行为 同理,“长按” 操作 也可以这样处理 |
|
ETiVJun 14, 2019
8
window.requestAnimationFrame
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestAnimationFrame 数帧数就好了……严格来说跟时间无关… |
|
9
@xiangyuecn 意思就是不记录时间呢?哈哈哈
|
|
ChingimJun 14, 2019 via Android
10
单击和双击的区别是什么?不就是时间吗?
|
|
ETiVJun 15, 2019 via iPhone
12
@sudoer 任何跑得起来的大系统都是个巨大循环,最外层都是 while true,用 reqAni 也是同理
然后基本就是通过全局状态,记录某一次单击的 frameId、判断再次单击时的新 frameId、对比两个 id 的差值,差得比较近的,模拟触发双击 |
|
catoncatJun 15, 2019
13
click 事件弄个 css 遮罩?
|
|
jiejissJun 15, 2019
14
防抖都是在时间上定义的(否则何来“抖”?)
不让用时间的话,只好想办法弄来时间了 比如楼上提到的 requestAnimationFrame 或者是用没被封的 API 例如 performance.now 再或者你给某个指定的 server url 发 request,让 server sleep 1000ms 再发送应答 |