Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

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

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
Строка 93: Строка 93:
if (pageName == "Заглавная_страница") {
if (pageName == "Заглавная_страница") {
   document.querySelector('.pashalka-jopa-trigger').addEventListener('click', () => {
   document.querySelector('.pashalka-jopa-trigger').addEventListener('click', () => {
     let html = document.documentElement.outerHTML;
     function getVisibleTextNodes(root) {
     let chars = html.split("");
        let nodes = [];
        function walk(node) {
            if (node.nodeType === Node.TEXT_NODE) {
                if (node.nodeValue.trim() !== "" && node.parentNode.offsetParent !== null) {
                    nodes.push(node);
                }
            } else if (node.nodeType === Node.ELEMENT_NODE && node.tagName !== "SCRIPT" && node.tagName !== "STYLE") {
                for (let child of node.childNodes) {
                    walk(child);
                }
            }
        }
        walk(root);
        return nodes;
    }
     let textNodes = getVisibleTextNodes(document.body);
     let available = [];
     let available = [];
     for (let idx = 0; idx < chars.length; idx++) {
     for (let node of textNodes) {
        if (!/[\s]/.test(chars[idx])) {
        for (let i = 0; i < node.nodeValue.length; i++) {
            available.push(idx);
            if (!/[\s]/.test(node.nodeValue[i])) {
                available.push({ node, index: i });
            }
         }
         }
     }
     }
Строка 104: Строка 121:
         if (available.length === 0) return;
         if (available.length === 0) return;
         let randIndex = Math.floor(Math.random() * available.length);
         let randIndex = Math.floor(Math.random() * available.length);
         let idx = available.splice(randIndex, 1)[0];
         let { node, index } = available.splice(randIndex, 1)[0];
         chars[idx] = "Ѿ";
        let chars = node.nodeValue.split("");
         document.open();
         chars[index] = "Ѿ";
        document.write(injectedHTML);
         node.nodeValue = chars.join("");
        document.close();
         setTimeout(replaceNext, 1);
         setTimeout(replaceNext, 1);
     }
     }