You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GreaseMonkey脚本移除谷歌搜索广告失败求助

解决GreaseMonkey脚本移除谷歌搜索广告失效的问题

可能的失效原因:

  • 谷歌搜索广告是动态加载的,DOMContentLoaded触发时,tvcap元素还没被渲染出来,找不到元素自然无法执行移除操作
  • 谷歌可能已经修改了广告容器的ID,当前广告区域的标识不再是tvcap
  • 脚本的@match规则配置错误,导致脚本根本没在谷歌搜索页面运行

对应的解决办法:

  1. 确认广告容器的实际选择器
    打开谷歌搜索页面按F12调出开发者工具,找到广告区域的元素,右键选择「复制」-「复制选择器」,获取当前广告容器的准确选择器。比如目前很多情况下,广告区域的class是commercial-unit-desktop-top,而非旧的tvcap。

  2. 处理动态加载的元素
    因为广告是动态渲染的,DOMContentLoaded时机过早,推荐用MutationObserver监听DOM变化,等目标元素出现后再移除:

    // ==UserScript==
    // @name         Remove Google Search Ads
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Remove Google search ads
    // @match        https://www.google.com/search*
    // @match        https://www.google.*.search*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
    
        // 替换成你获取到的广告容器选择器
        const adSelector = '.commercial-unit-desktop-top';
    
        const observer = new MutationObserver((mutations) => {
            const adElement = document.querySelector(adSelector);
            if (adElement) {
                adElement.remove();
                observer.disconnect(); // 移除后停止监听
            }
        });
    
        // 监听body下所有子节点变化
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    })();
    

    也可以用简单的轮询方式快速测试:

    // ==UserScript==
    // @name         Remove Google Search Ads
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  Remove Google search ads
    // @match        https://www.google.com/search*
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
        const adSelector = '.commercial-unit-desktop-top';
        const checkTimer = setInterval(() => {
            const adElement = document.querySelector(adSelector);
            if (adElement) {
                adElement.remove();
                clearInterval(checkTimer);
            }
        }, 500); // 每500毫秒检查一次
    })();
    
  3. 检查脚本的@match规则
    确保@match覆盖了谷歌搜索的域名,比如https://www.google.com/search*,如果使用地区化谷歌域名(如google.co.uk),需要补充对应的@match规则。

额外提示

如果getElementById找不到元素,优先用querySelector配合class或其他属性定位,谷歌经常调整元素ID,但class或结构相对更稳定。

内容的提问来源于stack exchange,提问作者ArchimedianIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:13:15