🏠 Home 

ZOVspeak

Этот скрипт сделает любую веб-страницу чуточку уютнее и роднее, если Vы пOнимаете, O чём я.

// ==UserScript==
// @name            ZOVspeak
// @name:ru         ZOVspeak
// @namespace       Violentmonkey Scripts
// @match           *://*/*
// @grant           none
// @version         1.0
// @author          -
// @description     Makes every webpage go full ZOV
// @description:ru  Этот скрипт сделает любую веб-страницу чуточку уютнее и роднее, если Vы пOнимаете, O чём я.
// @license MIT
// ==/UserScript==
const replaceZOVString = (s) => {
return s
.replace(/[Зз]/g, 'Z')
.replace(/[Вв]/g, 'V')
.replace(/[Оо]/g, 'O');
}
const replaceZOVHTML = (element) => {
element.childNodes.forEach((node) => replaceZOVHTML(node));
if (element.nodeType == Node.TEXT_NODE) {
const newValue = replaceZOVString(element.nodeValue);
if (element.nodeValue !== newValue) {
element.nodeValue = newValue;
}
}
}
const observer = new MutationObserver(
(mutationList, observer) => {
for (const mutation of mutationList) {
switch (mutation.type) {
case 'childList':
mutation.addedNodes.forEach(replaceZOVHTML);
break;
case 'attributes':
break;
case 'characterData':
replaceZOVHTML(mutation.target);
break;
case 'subtree':
break;
}
}
}
);
observer.observe(document, {
childList: true,
// attributes: true,
characterData: true,
subtree: true
});
const onLoad = () => {
replaceZOVHTML(document.getElementsByTagName('html')[0]);
}
window.addEventListener('load', onLoad, false);