fix(app): 优化阻止默认右键菜单处理逻辑,处理每个元素
This commit is contained in:
34
src/App.vue
34
src/App.vue
@@ -53,28 +53,36 @@ const themeVars = useThemeVars();
|
|||||||
*/
|
*/
|
||||||
function handleContextMenu(event) {
|
function handleContextMenu(event) {
|
||||||
|
|
||||||
let element = event.target;
|
let elements = event.composedPath();
|
||||||
let classValue = '';
|
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 键时
|
// 排除按住 Ctrl 键时
|
||||||
if (event.ctrlKey) {
|
if (event.ctrlKey) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取元素 class 信息
|
for (let i = 0; i < elements.length; i++) {
|
||||||
if (element instanceof HTMLElement) {
|
|
||||||
classValue = element.classList.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 排除输入框元素
|
let element = elements[i];
|
||||||
if (element instanceof HTMLInputElement) {
|
|
||||||
return;
|
// 获取元素 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();
|
event.preventDefault();
|
||||||
|
Reference in New Issue
Block a user