// ==UserScript== // @name 遮挡属性快捷键(含无遮挡) // @namespace http://tampermonkey.net/ // @version 1.2 // @description 按数字键设置遮挡比例,按`键设置无遮挡,按E键打开属性面板 // @match https://bdlabel-adsd.mychery.com/* // @grant none // @license All Rights Reserved // ==/UserScript== (function() { 'use strict'; // 快捷键映射 const keyMap = { 'Digit1': '遮挡0-25%', 'Digit2': '遮挡25-50%', 'Digit3': '遮挡50-75%', 'Digit4': '遮挡75%以上', 'Backquote': '无遮挡' // ` 键 }; // 通过模拟键盘事件按下 E 键来打开面板 function openPanel() { const event = new KeyboardEvent('keydown', { key: 'e', code: 'KeyE', keyCode: 69, which: 69, bubbles: true, cancelable: true, composed: true }); document.dispatchEvent(event); return true; } // 关闭面板 function closePanel() { const confirmBtn = document.querySelector('.style_submitButtonContainer__13rSp button'); if (confirmBtn) { confirmBtn.click(); return true; } return false; } // 检查面板是否已打开 function isPanelOpen() { return document.getElementById('OcclusionLevel') !== null; } // 设置遮挡 function setOcclusion(text) { const group = document.getElementById('OcclusionLevel'); if (!group) return false; const labels = group.querySelectorAll('label'); for (let label of labels) { if (label.innerText.trim() === text) { label.click(); return true; } } return false; } // 等待面板打开 function waitForPanel(callback, maxAttempts = 30) { let attempts = 0; const check = () => { if (isPanelOpen()) { callback(); } else if (attempts++ < maxAttempts) { setTimeout(check, 100); } }; check(); } // 主流程 function handleOcclusion(text) { if (isPanelOpen()) { setOcclusion(text); setTimeout(closePanel, 200); } else { // 按 E 键打开面板 openPanel(); waitForPanel(() => { setOcclusion(text); setTimeout(closePanel, 200); }); } } // 键盘监听 document.addEventListener('keydown', (e) => { const text = keyMap[e.code]; // 排除输入框、文本域等,且不拦截 E 键自身的功能 if (text && !e.target.matches('input, textarea, [role="spinbutton"]')) { e.preventDefault(); console.log(`[遮挡快捷键] 按下 ${e.key},设置为: ${text}`); handleOcclusion(text); } }); console.log('[遮挡快捷键] 已加载 (v1.1)'); console.log('[遮挡快捷键] 快捷键: 1=0-25%, 2=25-50%, 3=50-75%, 4=75%以上, `=无遮挡, E=打开面板'); })();