Greasy Fork

Greasy Fork is available in English.

强制你看广告

只显示Google广告

当前为 2025-10-23 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         强制你看广告
// @version      1.0
// @description  只显示Google广告
// @author       LangYa466
// @match        *://*/*
// @grant        none
// @namespace http://greasyfork.icu/users/1526786
// ==/UserScript==

(function() {
    'use strict';

    // 延迟1秒执行,等待页面上的脚本执行,特别是那些动态插入广告的脚本
    setTimeout(() => {
        const googleAdSelectors = [
            '.adsbygoogle',
            'ins[data-ad-client]',
            'div[id^="google_ads_iframe_"]',
            'iframe[id^="google_ads_iframe_"]',
            'div[data-google-query-id]',
            'div[id^="google-center-div"]',
            'div[aria-label="Advertisement"]'
        ];

        // 检查页面是否存在Google广告脚本
        const hasGoogleAdScript = Array.from(document.scripts).some(s =>
            s.src && s.src.includes('pagead2.googlesyndication.com')
        );

        // 查找所有匹配的Google广告元素
        let googleAdElements = [];
        googleAdSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(el => googleAdElements.push(el));
        });

        // 判断条件:页面上必须有可见的Google广告元素,或者至少有Google广告的脚本
        if (googleAdElements.length > 0 || hasGoogleAdScript) {
            // 如果只检测到脚本但没找到元素,可能是元素还没渲染出来,再多等1.5秒
            if (googleAdElements.length === 0) {
                setTimeout(isolateGoogleAds, 1500);
            } else {
                isolateGoogleAds();
            }
        } else {
            // 如果连Google的广告脚本都找不到,直接判定为无广告
            showFailureMessage();
        }

        function isolateGoogleAds() {
            // 再次查找广告元素,以捕获延迟加载的广告
            googleAdElements = [];
            googleAdSelectors.forEach(selector => {
                document.querySelectorAll(selector).forEach(el => {
                    // 确保元素在DOM中并且是可见的
                    if (document.body.contains(el) && el.offsetParent !== null) {
                         googleAdElements.push(el);
                    }
                });
            });

            // 如果等待后依然没有找到任何可见的广告元素,则显示失败信息
            if (googleAdElements.length === 0) {
                showFailureMessage();
                return;
            }

            // 创建一个全新的容器来存放所有广告
            const adContainer = document.createElement('div');
            adContainer.style.cssText = `
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: start;
                width: 100%;
                min-height: 100vh;
                padding: 20px;
                box-sizing: border-box;
                gap: 20px;
                background-color: #f0f0f0;
            `;

            // 将所有找到的广告元素移动到新容器中
            googleAdElements.forEach(ad => {
                adContainer.appendChild(ad);
            });

            // 清理旧页面内容
            document.head.innerHTML = '<meta charset="UTF-8"><title>广告</title>';
            document.body.innerHTML = '';
            document.body.style.cssText = 'margin:0; padding:0;';

            // 将只包含广告的容器放入页面
            document.body.appendChild(adContainer);
        }

        function showFailureMessage() {
            // 彻底替换页面内容为提示信息
            document.head.innerHTML = '<meta charset="UTF-8"><title>没有广告</title>';
            document.body.innerHTML = `
                <div style="
                    display:flex;
                    align-items:center;
                    justify-content:center;
                    height:100vh;
                    font-size:2em;
                    color:red;
                    background-color:#fff;
                ">
                    没有广告不能看!
                </div>
            `;
            document.body.style.cssText = 'margin:0; padding:0;';
        }

    }, 1000);

})();