feat: 升级至 v0.3.16 — 工单修复 51 项 + 审查修复 30 项(安全加固/适配器/工具系统/数据层/前端)
This commit is contained in:
@@ -36,6 +36,16 @@ function matchModifier(event: KeyboardEvent, ctrl?: boolean, shift?: boolean): b
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* #39 修复: 检测键盘事件目标是否为输入框(input/textarea/contentEditable)
|
||||
* 用于在输入框聚焦时屏蔽单字符快捷键,避免拦截用户正常输入
|
||||
*/
|
||||
function isInputTarget(e: KeyboardEvent): boolean {
|
||||
const target = e.target as HTMLElement | null;
|
||||
if (!target) return false;
|
||||
return ['INPUT', 'TEXTAREA'].includes(target.tagName) || target.isContentEditable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 全局快捷键 Hook
|
||||
*
|
||||
@@ -46,6 +56,12 @@ export function useKeyboardShortcuts(): void {
|
||||
const handleKeyDown = (e: KeyboardEvent): void => {
|
||||
const key = e.key.toLowerCase();
|
||||
|
||||
// #39 修复: 输入框聚焦时,单字符无修饰键直接放行,避免拦截用户输入
|
||||
// Ctrl/Cmd 组合键不受影响(如 Ctrl+N/L/D 等仍可触发)
|
||||
if (isInputTarget(e) && e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Esc — 关闭弹窗
|
||||
if (key === 'escape') {
|
||||
const { settingsOpen, closeSettings } = useUIStore.getState();
|
||||
|
||||
Reference in New Issue
Block a user