From 084afc0cef246ae1ec51cedd37cf39797404ee31 Mon Sep 17 00:00:00 2001 From: Frost-ZX Date: Fri, 21 Feb 2025 22:34:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(app):=20=E4=BC=98=E5=8C=96=E9=98=BB?= =?UTF-8?q?=E6=AD=A2=E9=BB=98=E8=AE=A4=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=AF=8F=E4=B8=AA=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/App.vue b/src/App.vue index ed06f26..787ffa3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -53,28 +53,36 @@ const themeVars = useThemeVars(); */ function handleContextMenu(event) { - let element = event.target; + let elements = event.composedPath(); let classValue = ''; - let classRegExp = /(__code__|n-code|n-input|n-input-number|n-select)/; + let classRegExp = /(n-code|n-input|n-input-number|n-ol|n-select)/; // 排除按住 Ctrl 键时 if (event.ctrlKey) { return; } - // 获取元素 class 信息 - if (element instanceof HTMLElement) { - classValue = element.classList.value; - } + for (let i = 0; i < elements.length; i++) { - // 排除输入框元素 - if (element instanceof HTMLInputElement) { - return; - } + let element = elements[i]; + + // 获取元素 class 信息 + if (element instanceof HTMLElement) { + classValue = element.classList.value; + } else { + continue; + } + + // 排除输入框元素 + if (element instanceof HTMLInputElement) { + return; + } + + // 排除指定元素 + if (classValue && classRegExp.test(classValue)) { + return; + } - // 排除指定元素 - if (classValue && classRegExp.test(classValue)) { - return; } event.preventDefault();