|
Метки: очистка ручная отмена |
| Строка 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);
| |