Files
kiss-translator/src/libs/touch.js

32 lines
705 B
JavaScript
Raw Normal View History

2023-11-10 18:00:34 +08:00
export function touchTapListener(fn, setting) {
const [touchLength, touchCount, touchTime] = setting;
let lastTouch = 0;
let curCount = 0;
const handleTouchend = (e) => {
if (e.touches.length !== touchLength) {
return;
}
const timer = setTimeout(() => {
clearTimeout(timer);
curCount = 0;
}, touchTime);
curCount++;
const now = Date.now();
if (curCount === touchCount && now - lastTouch <= touchTime) {
timer && clearTimeout(timer);
curCount = 0;
fn();
}
lastTouch = now;
};
document.addEventListener("touchend", handleTouchend);
return () => {
document.removeEventListener("touchend", handleTouchend);
};
}