From e4771e795b111e300b708150ee595d6fa5495309 Mon Sep 17 00:00:00 2001 From: Gabe Date: Thu, 20 Nov 2025 17:30:55 +0800 Subject: [PATCH] fix: Trigger shortcut key when keyup (#410) --- src/libs/shortcut.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/libs/shortcut.js b/src/libs/shortcut.js index a618e4a..925986c 100644 --- a/src/libs/shortcut.js +++ b/src/libs/shortcut.js @@ -61,14 +61,25 @@ export const shortcutRegister = (targetKeys = [], fn, target = document) => { if (targetKeys.length === 0) return () => {}; const targetKeySet = new Set(targetKeys); + let hasInterference = false; const onKeyDown = (pressedKeys, event) => { - if (isSameSet(targetKeySet, pressedKeys)) { - // event.preventDefault(); // 阻止浏览器的默认行为 - // event.stopPropagation(); // 阻止事件继续(向父元素)冒泡 - fn(); + // if (isSameSet(targetKeySet, pressedKeys)) { + // // event.preventDefault(); // 阻止浏览器的默认行为 + // // event.stopPropagation(); // 阻止事件继续(向父元素)冒泡 + // fn(); + // } + if (!targetKeySet.has(event.code)) { + hasInterference = true; + } + }; + const onKeyUp = (pressedKeys, event) => { + if (isSameSet(targetKeySet, pressedKeys) && !hasInterference) { + fn(); + } + if (pressedKeys.size === 1) { + hasInterference = false; } }; - const onKeyUp = () => {}; return shortcutListener(onKeyDown, onKeyUp, target); };