From 8038397185ca8d4d8037b203b1ddbbde85d6cf6c Mon Sep 17 00:00:00 2001 From: WeidiDeng Date: Sat, 30 Mar 2024 11:07:25 +0800 Subject: [PATCH] record click timestamps to calculate number of clicks (#728) * record click timestamps to calculate number of clicks * break after each case --- packages/artplayer/src/events/clickInit.js | 47 +++++++++++++--------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/packages/artplayer/src/events/clickInit.js b/packages/artplayer/src/events/clickInit.js index 304cb31ca..05b992e16 100644 --- a/packages/artplayer/src/events/clickInit.js +++ b/packages/artplayer/src/events/clickInit.js @@ -18,35 +18,42 @@ export default function clickInit(art, events) { } }); - let clickTime = 0; + let clickTimes = []; events.proxy($video, 'click', (event) => { const now = Date.now(); + clickTimes.push(now); const { MOBILE_CLICK_PLAY, DBCLICK_TIME, MOBILE_DBCLICK_PLAY, DBCLICK_FULLSCREEN } = constructor; - if (now - clickTime <= DBCLICK_TIME) { - art.emit('dblclick', event); + const clicks = clickTimes.filter((t) => now - t <= DBCLICK_TIME); + switch (clicks.length) { + case 1: + art.emit('click', event); - if (isMobile) { - if (!art.isLock && MOBILE_DBCLICK_PLAY) { + if (isMobile) { + if (!art.isLock && MOBILE_CLICK_PLAY) { + art.toggle(); + } + } else { art.toggle(); } - } else { - if (DBCLICK_FULLSCREEN) { - art.fullscreen = !art.fullscreen; - } - } - } else { - art.emit('click', event); + clickTimes = clicks; + break; + case 2: + art.emit('dblclick', event); - if (isMobile) { - if (!art.isLock && MOBILE_CLICK_PLAY) { - art.toggle(); + if (isMobile) { + if (!art.isLock && MOBILE_DBCLICK_PLAY) { + art.toggle(); + } + } else { + if (DBCLICK_FULLSCREEN) { + art.fullscreen = !art.fullscreen; + } } - } else { - art.toggle(); - } + clickTimes = []; + break; + default: + clickTimes = []; } - - clickTime = now; }); }