// ==UserScript== // @name 修改网页颜色 // @namespace http://tampermonkey.net/ // @version 0.1.3 // @author yhu // @description 点击文字修改颜色 // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; function hsvToRgb(h, s, v) { h = h / 360; s = s / 100; v = v / 100; let r, g, b; const i = Math.floor(h * 6); const f = h * 6 - i; const p = v * (1 - s); const q = v * (1 - f * s); const t = v * (1 - (1 - f) * s); switch (i % 6) { case 0: r = v; g = t; b = p; break; case 1: r = q; g = v; b = p; break; case 2: r = p; g = v; b = t; break; case 3: r = p; g = q; b = v; break; case 4: r = t; g = p; b = v; break; default: r = v; g = p; b = q; } return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; } document.body.addEventListener('click', function(e) { let target = e.target; if (target.nodeType === 3) { target = target.parentNode; } if (target.tagName && target.tagName.toLowerCase() === 'input') { return; } e.preventDefault(); e.stopPropagation(); const input = prompt('输入颜色值:\nr 255 255 255 (RGB 0-255)\nh 360 100 100 (HSV: H 0-360, S 0-100, V 0-100)', 'r 255 255 255'); if (input) { const parts = input.trim().split(/\s+/); if (parts.length === 4) { const mode = parts[0].toLowerCase(); const a = parseFloat(parts[1]); const b = parseFloat(parts[2]); const c = parseFloat(parts[3]); if (!isNaN(a) && !isNaN(b) && !isNaN(c)) { let r, g, bl; if (mode === 'r') { r = parseInt(parts[1]); g = parseInt(parts[2]); bl = parseInt(parts[3]); if (r >= 0 && r <= 255 && g >= 0 && g <= 255 && bl >= 0 && bl <= 255) { target.style.color = `rgb(${r}, ${g}, ${bl})`; } else { alert('RGB值必须在0-255之间'); } } else if (mode === 'h') { if (a >= 0 && a <= 360 && b >= 0 && b <= 100 && c >= 0 && c <= 100) { const rgb = hsvToRgb(a, b, c); r = rgb[0]; g = rgb[1]; bl = rgb[2]; target.style.color = `rgb(${r}, ${g}, ${bl})`; } else { alert('HSV值: H 0-360, S 0-100, V 0-100'); } } else { alert('请以 r 或 h 开头指定模式'); } } else { alert('请输入有效的数字'); } } else { alert('请输入: 模式 值1 值2 值3 (空格分离)'); } } }, true); })();