MediaWiki:Test.js: различия между версиями

Страница интерфейса MediaWiki
(Полностью удалено содержимое страницы)
Метка: очистка
Нет описания правки
Метка: отменено
Строка 1: Строка 1:
// Словарь слов и их цветов
var wordColors = {
    "Клише": "#FF0000", // красный
    "властью": "#00FF00", // зелёный
    "ответственность": "#0000FF", // синий
    "Стандартные Рабочие Процедуры": "#FFA500", // оранжевый
    "ядреный диск": "#800080", // фиолетовый
    "станции": "#008080", // бирюзовый
    "ГСБ": "#FFC0CB", // розовый
    "диск": "#A52A2A", // коричневый
    "СРП/КЗ": "#FFFF00", // жёлтый
    "банановая кожурка": "#00FFFF" // голубой
};


function colorWords() {
    // Получаем все текстовые узлы в body
    function walk(node) {
        var child, next;
        switch (node.nodeType) {
            case 1: // Element
            case 9: // Document
            case 11: // Document fragment
                child = node.firstChild;
                while (child) {
                    next = child.nextSibling;
                    walk(child);
                    child = next;
                }
                break;
            case 3: // Text node
                replaceText(node);
                break;
        }
    }
    function replaceText(textNode) {
        var parent = textNode.parentNode;
        var text = textNode.nodeValue;
        Object.keys(wordColors).forEach(function(word) {
            // Экранируем специальные символы для регулярки
            var escapedWord = word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
            var regex = new RegExp(escapedWord, 'g');
            if (regex.test(text)) {
                var span = document.createElement('span');
                span.innerHTML = text.replace(regex, function(match) {
                    return '<span style="color:' + wordColors[word] + '">' + match + '</span>';
                });
                parent.replaceChild(span, textNode);
            }
        });
    }
    walk(document.body);
}
// Запускаем после полной загрузки страницы
window.addEventListener('load', colorWords);

Версия от 22:10, 16 января 2026

// Словарь слов и их цветов
var wordColors = {
    "Клише": "#FF0000", // красный
    "властью": "#00FF00", // зелёный
    "ответственность": "#0000FF", // синий
    "Стандартные Рабочие Процедуры": "#FFA500", // оранжевый
    "ядреный диск": "#800080", // фиолетовый
    "станции": "#008080", // бирюзовый
    "ГСБ": "#FFC0CB", // розовый
    "диск": "#A52A2A", // коричневый
    "СРП/КЗ": "#FFFF00", // жёлтый
    "банановая кожурка": "#00FFFF" // голубой
};

function colorWords() {
    // Получаем все текстовые узлы в body
    function walk(node) {
        var child, next;
        switch (node.nodeType) {
            case 1: // Element
            case 9: // Document
            case 11: // Document fragment
                child = node.firstChild;
                while (child) {
                    next = child.nextSibling;
                    walk(child);
                    child = next;
                }
                break;
            case 3: // Text node
                replaceText(node);
                break;
        }
    }

    function replaceText(textNode) {
        var parent = textNode.parentNode;
        var text = textNode.nodeValue;

        Object.keys(wordColors).forEach(function(word) {
            // Экранируем специальные символы для регулярки
            var escapedWord = word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
            var regex = new RegExp(escapedWord, 'g');

            if (regex.test(text)) {
                var span = document.createElement('span');
                span.innerHTML = text.replace(regex, function(match) {
                    return '<span style="color:' + wordColors[word] + '">' + match + '</span>';
                });

                parent.replaceChild(span, textNode);
            }
        });
    }

    walk(document.body);
}

// Запускаем после полной загрузки страницы
window.addEventListener('load', colorWords);