@@ -31,6 +31,10 @@ var isPassiveSupported = (function() {
31
31
return supportsPassive ;
32
32
} ) ( ) ;
33
33
34
+ // Save last touch time globally (touch start time or touch end time), if a `click` event triggered,
35
+ // and the time near by the last touch time, this `click` event will be ignored. This is used for
36
+ // resolve touch through issue.
37
+ var globalLastTouchTime = 0 ;
34
38
35
39
var vueTouchEvents = {
36
40
install : function ( Vue , constructorOptions ) {
@@ -51,10 +55,10 @@ var vueTouchEvents = {
51
55
$el = this ;
52
56
53
57
if ( isTouchEvent ) {
54
- $this . lastTouchStartTime = event . timeStamp ;
58
+ globalLastTouchTime = event . timeStamp ;
55
59
}
56
60
57
- if ( isMouseEvent && $this . lastTouchStartTime && event . timeStamp - $this . lastTouchStartTime < 350 ) {
61
+ if ( isMouseEvent && globalLastTouchTime && event . timeStamp - globalLastTouchTime < 350 ) {
58
62
return ;
59
63
}
60
64
@@ -131,7 +135,7 @@ var vueTouchEvents = {
131
135
isMouseEvent = event . type . indexOf ( 'mouse' ) >= 0 ;
132
136
133
137
if ( isTouchEvent ) {
134
- $this . lastTouchEndTime = event . timeStamp ;
138
+ globalLastTouchTime = event . timeStamp ;
135
139
}
136
140
137
141
var touchholdEnd = isTouchEvent && ! $this . touchHoldTimer ;
@@ -141,7 +145,7 @@ var vueTouchEvents = {
141
145
142
146
removeTouchClass ( this ) ;
143
147
144
- if ( isMouseEvent && $this . lastTouchEndTime && event . timeStamp - $this . lastTouchEndTime < 350 ) {
148
+ if ( isMouseEvent && globalLastTouchTime && event . timeStamp - globalLastTouchTime < 350 ) {
145
149
return ;
146
150
}
147
151
@@ -298,6 +302,7 @@ var vueTouchEvents = {
298
302
// change the passive option for the moving event if disablePassive modifier exists
299
303
passiveOpt = false ;
300
304
}
305
+ // fallthrough
301
306
default :
302
307
$this . callbacks [ eventType ] = $this . callbacks [ eventType ] || [ ] ;
303
308
$this . callbacks [ eventType ] . push ( binding ) ;
0 commit comments