Greasy Fork

Greasy Fork is available in English.

网页广告屏蔽(Ai😍) 不行就刷新页面

自动屏蔽网页广告(Ai)

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         网页广告屏蔽(Ai😍) 不行就刷新页面
// @namespace    http://tampermonkey.net/
// @version      1.9
// @description  自动屏蔽网页广告(Ai)
// @author       Han
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 精细化广告选择器(仅隐藏,不删除)
    const adSelectors = [
        '[id*="ad-"]', '[class*="ad-"]', '[id*="banner"]', '[class*="banner"]', '[class*="popup"]',
        '[id*="sponsor"]', '[class*="sponsor"]', '[class*="promotion"]', '[class*="close"]',
        '[id*="ads"]', '[class*="ads"]', '[class*="modal"]', '[class*="overlay"]',
        '[class*="interstitial"]'
    ];

    // **避免误删的关键元素**
    const safeSelectors = [
        'video', 'canvas', 'input', 'textarea',
        '[id*="player"]', '[class*="player"]', '[id*="content"]', '[class*="content"]',
        '[id*="login"]', '[class*="login"]', '[id*="signin"]', '[id*="loginForm"]',
        '[id*="subscribe"]', '[class*="subscribe"]', '[id*="payment"]', '[class*="payment"]',
        '[id*="search"]', '[class*="search"]', '[id*="navigation"]', '[class*="navigation"]',
        '[id*="header"]', '[class*="header"]', '[id*="footer"]', '[class*="footer"]',
        '[id*="main"]', '[class*="main"]', '[id*="article"]', '[class*="article"]', // 防止文章内容被删除
        '[id*="comments"]', '[class*="comments"]', '[id*="discussion"]', '[class*="discussion"]'
    ];

    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();
})();