您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Режим стримера для Lolzteam
当前为
// ==UserScript== // @name LztStreamerMode // @namespace http://tampermonkey.net/ // @version 0.6.1 // @description Режим стримера для Lolzteam // @author vuchaev2015 // @match https://zelenka.guru/* // @icon https://www.google.com/s2/favicons?sz=64&domain=zelenka.guru // @grant none // @run-at document-start // ==/UserScript== document.addEventListener("DOMContentLoaded", () => { const selectors = [ "#ConversationListItems", ".bbCodeHide", "#AlertPanels", "#AccountMenu > ul > li.Popup.PopupInPopup.DisableHover > a > span.left", ]; const applyBlur = (selector, trigger = 'hover') => { const elements = document.querySelectorAll(selector); elements.forEach((el) => { if (el.classList.contains("blurred")) return; el.style.filter = "blur(5px)"; el.classList.add("blurred"); if (trigger === 'click') { el.addEventListener("click", () => { el.style.filter = el.style.filter.includes("blur") ? "none" : "blur(5px)"; }); } else { el.addEventListener("mouseover", () => {el.style.filter = "none";}); el.addEventListener("mouseout", () => {el.style.filter = "blur(5px)";}); } }); }; function applyBlurIfMatchesUrl(url, selector, trigger) { if (window.location.href.startsWith(url)) { applyBlur(selector, trigger); } } function applyBlurToPlaceholder() { const placeholder = document.querySelector('.listPlaceholder'); if (placeholder && !placeholder.classList.contains('blurred')) { placeholder.style.filter = "blur(5px)"; placeholder.classList.add("blurred"); } }; function changeInputType(selector) { var inputElements = document.querySelectorAll(selector); for (var i = 0; i < inputElements.length; i++) { inputElements[i].type = 'password'; } } function applyBlurToBBCodeHide(selector, trigger) { const elements = document.querySelectorAll(selector); elements.forEach((el) => { if (el.classList.contains("blurred")) return; const quote = el.querySelector("div.quote"); const quoteContainer = el.querySelector( "blockquote.quoteContainer.hideContainer" ); const attribution = el.querySelector("aside > div.attribution.type"); if (quote && quoteContainer && attribution) { quote.style.filter = "blur(5px)"; el.classList.add("blurred"); if (trigger === 'click') { quoteContainer.addEventListener("click", function (event) { if (event.target === quoteContainer) { quote.style.filter = quote.style.filter.includes("blur") ? "none" : "blur(5px)"; } }); quote.addEventListener("click", function (event) { if (event.target === quote) { quote.style.filter = quote.style.filter.includes("blur") ? "none" : "blur(5px)"; } }); } else { quoteContainer.addEventListener("mouseenter", () => { quote.style.filter = "none"; }); quoteContainer.addEventListener("mouseleave", () => { quote.style.filter = "blur(5px)"; }); } } }); } const applyBlurToAllSelectors = () => selectors.forEach((selector) => { if (selector === ".bbCodeHide") { applyBlurToBBCodeHide(selector, "click"); } else { applyBlur(selector); } }); applyBlurToAllSelectors(); // блюрим элементы из указанных селекторов при загрузке страницы applyBlurIfMatchesUrl("https://zelenka.guru/account/security", "#ctrl_email", "click"); // блюрим почту const onFilterChanges = () => { const elementToObserve = document.querySelector('.listPlaceholder'); if (elementToObserve && elementToObserve.style.filter !== "blur(5px)") { applyBlur('.listPlaceholder') // блюрим сообщения } }; const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'childList' && mutation.addedNodes.length > 0) { changeInputType('input[name="secret_answer"]'); // превращаем текст в пароль, секретные вопросы applyBlurToBBCodeHide('.bbCodeHide', "click"); // ищем новые элементы с хайдом applyBlur('[id^="imn-XenForoUniq"] span.message'); // блюрим live сообщения applyBlur('.liveAlert.listItemText li[id^="alert"]'); // блюрим live уведомления } // фикс слета блюра при новом сообщении, фильтры if (mutation.type === 'attributes' && mutation.attributeName === 'style' && mutation.target.classList.contains('listPlaceholder')) { onFilterChanges(); } }); }); observer.observe(document.body, { childList: true, attributes: true, attributeFilter: ['style'], subtree: true, }); });