您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
当单元格的内容是 #AABBCC 这样的颜色值时,给单元格背景上色!
// ==UserScript== // @name 让 Flowus 多维表单元格显示颜色 // @namespace http://tampermonkey.net/ // @version 0.2 // @license MIT // @description 当单元格的内容是 #AABBCC 这样的颜色值时,给单元格背景上色! // @author luobo25 // @match https://flowus.cn/* // @icon https://www.google.com/s2/favicons?sz=64&domain=flowus.cn // @grant none // ==/UserScript== (function() { 'use strict'; const r = /(?<rgb>#[0-9A-F]{3,8})( +(?<alpha>\d+)%)?/i // alpha: float, 0 -> 1 var setAlpha = function(rgb, alpha) { var a = "00" + (Math.round(alpha * 255).toString(16)) a = a.substring(a.length - 2, a.length) return "#"+ rgb.substring(1, 7) + a } var colorLight = function(argb) { var r = argb.substring(1, 3) var g = argb.substring(3, 5) var b = argb.substring(5, 7) var a = argb.substring(7, 9) var af = (parseInt(a, 16) / 255.0) return (parseInt(r, 16) + parseInt(g, 16) + parseInt(b, 16)) * af + (1 - af) * (255 * 3) // 加上透过白色的亮度 } var addColor = function(element) { var text = element.textContent var m = text.match(r) if (m != null && m.groups != null && m.groups.rgb != null) { var alpha = m.groups.alpha != null ? parseInt(m.groups.alpha) / 100.0 : 1 var argb = setAlpha(m.groups.rgb, alpha) element.style.background = argb var l = colorLight(argb) if (l < 384) { element.style.color = "#FFF" } else { element.style.color = "#000" } } } var isTable = function(n) { return n.tagName != null && n.tagName.toLowerCase() == "table" } var isTD = function(n) { return n.tagName != null && n.tagName.toLowerCase() == "td" } var findTD = function(path) { for (var i = 0; i < path.length; i++) { var n = path[i] if (n.tagName != null && n.tagName.toLowerCase() == "td") { return n } } return null } var isP2 = function(n) { return (n.tagName != null && n.tagName.toLowerCase() == "div" && n.attributes['data-property-id'] != null) } var findP2 = function(path) { for (var i = 0; i < path.length; i++) { var n = path[i] if (isP2(n)) { return n } } return null } var f = function(event) { var td = findTD(event.path) if (td != null) { addColor(td) } else { var path = event.path var first = path[0] if (first.children != null && first.children.length > 0) { path = [first.children[0]].concat(path) } var p2 = findP2(path) if (p2 != null) { addColor(p2) } } } document.addEventListener('DOMSubtreeModified', f) var recurFind = function(n) { if (isTable(n)) { observer.observe(n) } else if (isTD(n) || isP2(n)) { addColor(n) } else { if (n.children != null && n.children.length > 0) { var arr = n.children for (var i = 0; i < arr.length; i++) { recurFind(arr[i]) } } } } var body = document.getElementsByTagName("body")[0] var targetNode = body var observerOptions = { childList: true, attributes: false, subtree: true, characterData: true } function callback(mutationList, observer) { mutationList.forEach((mutation) => { switch(mutation.type) { case 'attributes': case 'characterData': case 'subtree': case 'childList': var added = mutation.addedNodes if (added != null) { added.forEach(x => recurFind(x, 0)) } break; } }); } var observer = new MutationObserver(callback); observer.observe(targetNode, observerOptions); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址