Greasy Fork

Greasy Fork is available in English.

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

自动屏蔽网页广告(Ai)并解除复制限制

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

// ==UserScript==
// @name         网页广告屏蔽(Ai😍) 不行就刷新页面
// @namespace    http://tampermonkey.net/
// @version      1.8
// @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"]'
    ];

    // **避免误删的关键元素**
    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"]'
    ];

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

})();