Greasy Fork

Greasy Fork is available in English.

网页广告屏蔽(Ai😍)

自动屏蔽网页广告(Ai)

当前为 2025-03-22 提交的版本,查看 最新版本

// ==UserScript==
// @name         网页广告屏蔽(Ai😍)
// @namespace    http://tampermonkey.net/
// @version      1.6
// @description  自动屏蔽网页广告(Ai)
// @author       Han
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 广告选择器(仅隐藏,不删除)
    const adSelectors = [
        'iframe', '[id*="ad"]', '[class*="ad"]',
        '[id*="banner"]', '[class*="banner"]',
        '[id*="popup"]', '[class*="popup"]',
        '[id*="sponsor"]', '[class*="sponsor"]',
        '[id*="promotion"]', '[class*="promotion"]',
        '[id*="close"]', '[class*="close"]'
    ];

    // **避免误删的关键元素**
    const safeSelectors = [
        'video', 'canvas', 'input', 'textarea',
        '[id*="player"]', '[class*="player"]',
        '[id*="content"]', '[class*="content"]',
        // 排除登录窗口相关的元素
        '[id*="login"]', '[class*="login"]', '[id*="signin"]', '[id*="loginForm"]'
    ];

    function hideAds() {
        adSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(el => {
                // 检查是否为安全元素
                if (!safeSelectors.some(safe => el.matches(safe) || el.closest(safe))) {
                    el.style.transition = "opacity 0.5s";
                    el.style.opacity = "0";
                    setTimeout(() => el.style.display = "none", 500);
                }
            });
        });
    }

    // 监听 DOM 变化,防止新广告出现
    const observer = new MutationObserver(hideAds);
    observer.observe(document.body, { childList: true, subtree: true });

    // 定时清理广告(防止懒加载广告)
    setInterval(hideAds, 5000);

    // **初始执行一次**
    hideAds();
})();