1 | export const tap = function(el, func, delay) {
|
2 | var startTime = 0;
|
3 | var moving = false;
|
4 | var isTap = false;
|
5 | var delayTime = delay || 500;
|
6 | var startClientX = 0;
|
7 | var startClientY = 0;
|
8 |
|
9 | el.addEventListener('touchstart', function(e) {
|
10 | startTime = e.timeStamp;
|
11 | var touches = e.touches[0];
|
12 | var startClientX = touches.clientX;
|
13 | var startClientY = touches.clientY;
|
14 | moving = true;
|
15 | isTap = true;
|
16 | });
|
17 |
|
18 | el.addEventListener('touchmove', function(e) {
|
19 | moving = true;
|
20 | var touches = e.touches[0];
|
21 | var clientX = touches.clientX;
|
22 | var clientY = touches.clientY;
|
23 |
|
24 | if (
|
25 | Math.abs(startClientX - clientX) > 15 ||
|
26 | Math.abs(startClientY - clientY) > 15
|
27 | ) {
|
28 | isTap = false;
|
29 | }
|
30 | });
|
31 |
|
32 | el.addEventListener('touchend', function(e) {
|
33 | var endTime = e.timeStamp;
|
34 | if (moving && isTap && endTime - startTime < delayTime) {
|
35 | func(e);
|
36 | }
|
37 | moving = false;
|
38 | isTap = false;
|
39 | startTime = 0;
|
40 | });
|
41 | };
|