新脚本,为大佬论坛的不同级别的域名标注颜色,方便阅读和筛选。 [复制链接]

帖子链接已复制到剪贴板
V wangqian (UID: 2425) 2023-8-1

5245 18

1.说明

在 上对域名进行高亮处理,并根据前缀长度设置不同的颜色。

其中:
一级域名:1-2字符的传说域名,金色
二级域名:3-4字符的稀有域名,红色
三级域名:5-6字符的一般域名,绿色
四级域名:7-8字符的大众域名,蓝色
五级域名:9字符以上的长域名,灰色

2.展示效果

3.下载链接
dalao.net 域名高亮显示 (greasyfork.org)

 

4.源码

// ==UserScript==
// @name     dalao.net 域名高亮显示
// @version  1
// @grant    none
// @description  在 dalao.net 上对域名进行高亮处理,并根据前缀长度设置不同的颜色
// @author       wangqian
// @match       *://dalao.net/*
// @match       *://www.dalao.net/*
// ==/UserScript==

(function() {
    function getHighlightColor(domainName) {
        var prefix = domainName.split('.')[0];  // 获取域名的前缀
        var length = prefix.length;

        if (length >= 1 && length <= 2) {
            return 'yellow';  // 一级域名
        } else if (length >= 3 && length <= 4) {
            return 'pink';  // 二级域名
        } else if (length >= 5 && length <= 6) {
            return 'lightgreen';  // 三级域名
        } else if (length >= 7 && length <= 8) {
            return 'lightblue';  // 四级域名
        } else {
            return 'lightgray';  // 五级域名
        }
    }

    function highlightDomainNames(textNode) {
        var parent = ;
        var textContent = textNode.textContent;

        var domainRegex = /\b((?:[a-z][a-z0-9-]*[a-z0-9]\.)+(?:[a-z][a-z-]{1,61}[a-z]|xn--[a-z0-9]{1,59}|[a-z]{2,}))\b/gi;
        var match = domainRegex.exec(textContent);

        while (match !== null) {
            var beforeMatchNode = document.createTextNode(textContent.slice(0, match.index));
            var matchNode = document.createElement('span');
            matchNode.style.backgroundColor = getHighlightColor(match[0]);  // 根据域名前缀长度设置高亮颜色
            matchNode.textContent = match[0];
            var afterMatchNode = document.createTextNode(textContent.slice(domainRegex.lastIndex));

            parent.insertBefore(beforeMatchNode, textNode);
            parent.insertBefore(matchNode, textNode);
            parent.insertBefore(afterMatchNode, textNode);

            parent.removeChild(textNode);

            textNode = afterMatchNode;
            textContent = textNode.textContent;
            match = domainRegex.exec(textContent);
        }
    }

    function findTextNodes(node) {
        var textNodes = [];

        for (var childNode of node.childNodes) {
            if (childNode.nodeType === Node.TEXT_NODE) {
                (childNode);
            } else {
                textNodes = textNodes.concat(findTextNodes(childNode));
            }
        }

        return textNodes;
    }

    var textNodes = findTextNodes(document.body);

    for (var textNode of textNodes) {
        highlightDomainNames(textNode);
    }
})();
随便逛逛
已有评论 (18)
提示:您必须 登录 才能查看此内容。
创建新帖
广告推广点击空位自助购买