|
 |
Хэй-хо, здравствуй! Если ты обнаружил себя среди тех, кому не доставляет бурной радости засилье кринжовых символов-эмоджи в заголовках тем, то я дам лёгкий и гибкий способ с ними расправиться. Это правда, что использование сторонних браузерных расширений компрометирует безопасность данных, — но если тебя стороной обошла блажь вводить номера с оборотов своих кредиток в игровой компьютер, то тебе и не о чем волноваться, ведь правда? Инструмент, который использую я: 🔗 ссылка Очень простой, максимально понятный и минималистичный, ставится на браузеры на chromium (то есть будет работать на самом Chrome и производных MS Edge, Opera, Avast Secure Browser, Brave и так далее). Снижение скорости загрузки страничек зависит от того, сколько кастомизаций ты у себя наворотишь, и оверолл незначительное — я делал полный редизайн Данжнмастер ру, и у меня всё тянет даже с учётом слабого загородного 3,5G интернета. Поставишь, разрешишь доступ к данным на l.dm.am, чтобы не кликать каждый раз. ПКМ клик по иконке экстеншона, ещё раз по жёлтой кнопке + Add new и ты уже будешь в редакторе. А там берёшь мой код под катом (см. ниже), выделяешь, ставишь первый кусок в большой правый квадрат (помеченный [JS]), второй кусок в большой левый квадрат (с отметкой [CSS]), проставляешь галочки и жмёшь Save в верхнем правом углу. Обнови страницу, чтобы увидеть результат! is banished from existence in all elements и ты великолепен, возьми себе с полки мятный пряничек.  Код: (function(factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof exports === 'object') { factory(require('jquery')); } else { factory(jQuery); } })(function(jQuery) { jQuery.extend({ highlight: function( node, re, nodeName, className, callback, ignoreDiacritics ) { if (node.nodeType === 3) { var subject = ignoreDiacritics ? jQuery.removeDiacritcs(node.data) : node.data; var match = subject.match(re); if (match) { var highlight = document.createElement(nodeName || 'div'); highlight.className = className || 'highlight'; var capturePos = node.data.indexOf(match[1], match.index);
var wordNode = node.splitText(capturePos); wordNode.splitText(match[1].length);
var wordClone = wordNode.cloneNode(true); highlight.appendChild(wordClone); wordNode.parentNode.replaceChild(highlight, wordNode); if (typeof callback == 'function') { callback(highlight); } return 1; } } else if ( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && !( node.tagName === nodeName.toUpperCase() && node.className === className ) ) { for (var i = 0; i < node.childNodes.length; i++) { i += jQuery.highlight( node.childNodes[i], re, nodeName, className, callback, ignoreDiacritics ); } } return 0; },
removeDiacritcs: function(word) { return word .replace(/[\u00c0-\u00c6]/g, 'A') .replace(/[\u00e0-\u00e6]/g, 'a') .replace(/[\u00c7]/g, 'C') .replace(/[\u00e7]/g, 'c') .replace(/[\u00c8-\u00cb]/g, 'E') .replace(/[\u00e8-\u00eb]/g, 'e') .replace(/[\u00cc-\u00cf]/g, 'I') .replace(/[\u00ec-\u00ef]/g, 'i') .replace(/[\u00d1|\u0147]/g, 'N') .replace(/[\u00f1|\u0148]/g, 'n') .replace(/[\u00d2-\u00d8|\u0150]/g, 'O') .replace(/[\u00f2-\u00f8|\u0151]/g, 'o') .replace(/[\u0160]/g, 'S') .replace(/[\u0161]/g, 's') .replace(/[\u00d9-\u00dc]/g, 'U') .replace(/[\u00f9-\u00fc]/g, 'u') .replace(/[\u00dd]/g, 'Y') .replace(/[\u00fd]/g, 'y'); } });
jQuery.fn.unhighlight = function(options) { var settings = { className: 'highlight', element: 'div' };
jQuery.extend(settings, options);
return this.find(settings.element + '.' + settings.className) .each(function() { var parent = this.parentNode; parent.replaceChild(this.firstChild, this); parent.normalize(); }) .end(); };
jQuery.fn.highlight = function(words, options, callback) { var settings = { className: 'highlight', element: 'div', caseSensitive: false, wordsOnly: false, wordsBoundary: '\\b', ignoreDiacritics: false };
jQuery.extend(settings, options);
if (typeof words === 'string') { words = [words]; } words = jQuery.grep(words, function(word) { return word != ''; }); words = jQuery.map(words, function(word) { if (settings.ignoreDiacritics) { word = jQuery.removeDiacritcs(word); } return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); });
if (words.length === 0) { return this; }
var flag = settings.caseSensitive ? '' : 'i'; var pattern = '(' + words.join('|') + ')'; if (settings.wordsOnly) { pattern = (settings.wordsBoundaryStart || settings.wordsBoundary) + pattern + (settings.wordsBoundaryEnd || settings.wordsBoundary); } var re = new RegExp(pattern, flag);
return this.each(function() { jQuery.highlight( this, re, settings.element, settings.className, callback, settings.ignoreDiacritics ); }); }; });
$('*').highlight(['🇺🇦'],{ className:'deflag_ukr', element:'div' }); и ещё .deflag_ukr{color: transparent;display: none;font-size: 0;} Если заменить звёздочку-астериск * на a в нужном месте, то флаги будут спущены только внутри ссылок, при этом оставаясь на месте в текстах (названия топиков на сайте представляют собой ссылки). Можно изменить подход на более суровый и ценой чуть больших тормозов вместо блэклиста запрещённых символов начать вайтлистить разрешённые символы, удалив из виду все остальные, как сделал я. Код (добавить в правый квадрат): $('#left').highlight(['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ы','ь','э','ю','я'],{ caseSensitive:false, className:'uncringe_rus', element:'div', removeDiacritcs:false }); $('#left').highlight(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],{ caseSensitive:false, className:'uncringe_eng', element:'div', removeDiacritcs:true }); $('#left').highlight([' ',' ','!','?','&',',',':',';','/','\\','|','…','+','−','—','„','“','’','«','»','⛛','0','1','2','3','4','5','6','7','8','9','₽','🇷🇺','$','¢','€','£','¥','₿'],{ caseSensitive:false, className:'uncringe_gen', element:'div', removeDiacritcs:true }); и ещё (добавить в левый): .uncringe_rus, .uncringe_en, .uncringe_gen{display: inline;} .uncringe_rus{color: #506080;font-size: 17px} .uncringe_eng{color: #888;font-size: 14.5px;} .uncringe_gen{color: #888;font-size: 19.5px;} #left a{color: transparent;display: inline;font-size: 0;} И в завершение вышесказанного поставлю тебе весёлую песенку ANTI-FLAG — „Good And Ready“. Слушай, надеюсь, ты со всем легко разобрался 🎵 ссылка
|