您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Удаляет рекламу из почты yandex
// ==UserScript== // @name Remove ads yandex mail // @version 0.6 // @description Удаляет рекламу из почты yandex // @author BaHeK // @match http*://mail.yandex.ru/* // @grant none // @downloadUrl https://github.com/BaHeK1994/remove-ads-yandex-mail/raw/main/script.user.js // @updateUrl https://github.com/BaHeK1994/remove-ads-yandex-mail/raw/main/script.user.js // @namespace https://greasyfork.org/users/791055 // ==/UserScript== (function() { 'use strict'; let observer = null; // Отслеживаем изменения HTML через observer let startObserver = () => { observer = new MutationObserver(() => { remove(); }); observer.observe(document.body, { childList: true, subtree: true, attributes: true }); }; let remove = () => { // Ищем div с class="message-list-banner-portal" document.querySelectorAll('[class="message-list-banner-portal"]').forEach((e) => { let banner = e.nextSibling; // Уже скрыто if (banner.style.display === "none") { return; } // Отключаем листенер изменения DOM, иначе будет рекурсия if (observer !== null) { observer.disconnect(); observer = null; } // Скрываем элемент рекламы banner.style.display = 'none'; }); // Ищем элементы с атрибутом data-key="view=*" // TODO: проверить актуально ли это document.querySelectorAll('[data-key^="view="]').forEach((e) => { // Получаем dataset key let key = e.dataset['key']; // У элементов с рекламой после view= идут только английские буквы let matches = key.match(/^view=([a-z]+)$/); if (matches == null) { return; } // Нужные элементы, их не надо удалять if (['notifications', 'labels', 'footer', 'app'].indexOf(matches[1]) !== -1) { return; } // Уже скрыто if (e.style.display === "none") { return; } // Отключаем листенер изменения DOM, иначе будет рекурсия if (observer !== null) { observer.disconnect(); observer = null; } // Скрываем элемент рекламы e.style.display = 'none'; }); // Скрываем родительский элемент .BannersBlock document.querySelectorAll('.BannersBlock').forEach((e) => { let parent = e.parentElement; // Уже скрыто if (parent.style.display === "none") { return; } // Отключаем листенер изменения DOM, иначе будет рекурсия if (observer !== null) { observer.disconnect(); observer = null; } // Скрываем parent.style.display = 'none'; }); // Запускаем observer if (observer === null) { startObserver(); } }; // Моментально скрываем рекламу, не дожидаясь изменений на странице remove(); })();