// ==UserScript== // @name 修改网页颜色 // @namespace http://tampermonkey.net/ // @version 0.1.2 // @author yhu // @description 点击文字修改颜色 // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; function hsvToRgb(h, s, v) { 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('输入RGB或HSV', '255 255 255'); if (input) { const parts = input.trim().split(/\s+/); if (parts.length === 3) { const a = parseFloat(parts[0]); const b = parseFloat(parts[1]); const c = parseFloat(parts[2]); if (!isNaN(a) && !isNaN(b) && !isNaN(c)) { let r, g, bl; if (a <= 1 && b <= 1 && c <= 1) { const rgb = hsvToRgb(a, b, c); r = rgb[0]; g = rgb[1]; bl = rgb[2]; } else { r = parseInt(parts[0]); g = parseInt(parts[1]); bl = parseInt(parts[2]); } if (!isNaN(r) && !isNaN(g) && !isNaN(bl)) { target.style.color = `rgb(${r}, ${g}, ${bl})`; } else { alert('无效'); } } else { alert('请输入数字'); } } else { alert('请输入三个数字(空格分离)'); } } }, true); })();