// ==UserScript== // @name 金额改色 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 金额今色 // @author ChenHongJiang // @match *://*/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/536940/%E9%87%91%E9%A2%9D%E6%94%B9%E8%89%B2.user.js // @updateURL https://update.greasyfork.icu/scripts/536940/%E9%87%91%E9%A2%9D%E6%94%B9%E8%89%B2.meta.js // ==/UserScript== (function() { 'use strict'; // '',// 👉 // 定义日期格式的正则表达式 // 狗皮膏药空格 :(?:\\s)? ' +kg+ ' const kg = '(?:\\s)?'; const datePatterns = [ '(?:$|¥|USD|HK$|HK)?' +kg+ '\\d+' +kg+ '(?:.\\d+)?' +kg+ '(?:-)?' +kg+ '(?:\\d+)?' +kg+ '(?:.\\d+)?' +kg+ '(?:亿元|万亿|千亿|百亿|十亿|亿|千万|百万|十万|万|千|百)?' +kg+ '(?:美|港|欧|日|韩|澳大利亚|加拿大|瑞士|新西兰|新加坡|瑞典|挪威|墨西哥|南非|俄罗斯|马来西亚|阿联酋|沙特|圆|元|币)?' +kg+ '(?:块钱|人民币|英镑|法郎|克朗|比索|兰特|卢布|林吉特|迪拉姆|里亚尔|USD|圆|元|币|块)', // 👉 '(?:$|¥|USD|HK$|HK)?' +kg+ '\\d+' +kg+ '(?:.\\d+)?' +kg+ '(?:-)?' +kg+ '(?:\\d+)?' +kg+ '(?:.\\d+)?' +kg+ '(?:億元|萬億|千億|百億|十億|億|千萬|百萬|十萬|萬|千|百)?' +kg+ '(?:美|港|歐|日|韓|澳大利亞|加拿大|瑞士|新西蘭|新加坡|瑞典|挪威|墨西哥|南非|俄羅斯|馬來西亞|阿聯酋|沙特|圓|元|幣)?' +kg+ '(?:塊錢|人民幣|英鎊|法郎|克朗|比索|蘭特|盧佈|林吉特|迪拉姆|裡亞爾|USD|圓|元|幣|塊)', // 👉 1.1亿美元 '(?:$|¥|USD|HK$|HK)?' +kg+ '\\d+' +kg+ '(?:.\\d+)?' +kg+ '(?:-)?' +kg+ '(?:\\d+)?' +kg+ '(?:.\\d+)?' +kg+ '(?:Trillion|Billion|Million)',// 👉 $ '\\d+' +kg+ '(?:.\\d+)?' +kg+ '(?:-)?' +kg+ '(?:\\d+)?' +kg+ '(?:.\\d+)?' +kg+ '(?:万亿|千亿|百亿|十亿|亿|千万|百万|十万|万|千|百|十)', '\\d+' +kg+ '(?:.\\d+)?' +kg+ '(?:-)?' +kg+ '(?:\\d+)?' +kg+ '(?:.\\d+)?' +kg+ '(?:萬億|千億|百億|十億|億|千萬|百萬|十萬|萬|千|百|十)', ]; const dateFormatRegex = new RegExp(datePatterns.join('|'), 'gi'); // 天气黄色:#FDD56F // 定义要应用的样式 const style = ` color: #F18A00 !important; font-weight: 600 !important; /*font-size: 15px !important;*/ font-family: "Microsoft YaHei" !important; text-shadow: none !important; `; // 遍历页面中所有的元素 const elements = document.querySelectorAll('*'); setTimeout(() => { elements.forEach(element => { // 获取元素的所有文本节点 const textNodes = getTextNodes(element); // 遍历每个文本节点 textNodes.forEach(textNode => { // 检查文本内容是否包含日期格式 if (dateFormatRegex.test(textNode.nodeValue)) { // 匹配所有日期格式 const matches = textNode.nodeValue.match(dateFormatRegex); // 从后向前处理每个匹配项 for (let i = matches.length - 1; i >= 0; i--) { const match = matches[i]; const index = textNode.nodeValue.indexOf(match); // 创建一个新 元素 const span = document.createElement('font'); span.style.cssText = style; span.textContent = match; // 使用 Range 来分割文本节点 const range = new Range(); range.setStart(textNode, index); range.setEnd(textNode, index + match.length); // 替换匹配的文本节点部分 range.deleteContents(); range.insertNode(span); } } }); }); }, 800); // 延迟 0.5 秒 // 获取元素的所有文本节点 function getTextNodes(node) { const textNodes = []; if (node.nodeType === Node.TEXT_NODE) { textNodes.push(node); } else if (node.nodeType === Node.ELEMENT_NODE) { for (let child of node.childNodes) { textNodes.push(...getTextNodes(child)); } } return textNodes; } })();