金额改色

金额今色

// ==UserScript==
// @name         金额改色
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  金额今色
// @author       ChenHongJiang
// @match        *://*/*
// @grant        none
// ==/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);

                    // 创建一个新 <font> 元素
                    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;
    }



})();