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

如何用Tampermonkey屏蔽指定网站的iframe与ID为dodo的div?

Tampermonkey脚本修复与内容屏蔽方案

一、完整解决方案脚本

以下脚本同时实现屏蔽所有iframe和移除ID为"dodo"的div元素,无需外部依赖,稳定兼容各类场景:

// ==UserScript==
// @name         Block Iframes & Remove Dodo Element
// @namespace    http://tampermonkey.net/
// @match        https://www.exemple.com/*
// @grant        GM_addStyle
// ==/UserScript==

// 1. 屏蔽所有iframe(CSS方式高效拦截,覆盖静态+动态加载的iframe)
GM_addStyle(`
    iframe {
        display: none !important;
        visibility: hidden !important;
        position: absolute !important;
        top: -9999px !important;
        left: -9999px !important;
    }
`);

// 2. 移除ID为"dodo"的元素(原生JS处理静态+动态加载的元素)
function removeDodo() {
    const dodoEl = document.getElementById('dodo');
    if (dodoEl) dodoEl.remove();
}

// 页面加载完成后先检查一次静态元素
removeDodo();

// 监听DOM变化,拦截后续动态添加的dodo元素
const dodoObserver = new MutationObserver((mutations) => {
    mutations.forEach(mutation => {
        // 检查新增节点是否为目标元素
        mutation.addedNodes.forEach(node => {
            if (node.id === 'dodo') {
                node.remove();
            } else if (node.querySelector?.('#dodo')) {
                node.querySelector('#dodo').remove();
            }
        });
        // 全局兜底检查,避免遗漏
        removeDodo();
    });
});

dodoObserver.observe(document.body, { childList: true, subtree: true });

// 可选:彻底移除iframe元素(配合CSS使用,确保无遗漏)
const iframeObserver = new MutationObserver((mutations) => {
    mutations.forEach(mutation => {
        mutation.addedNodes.forEach(node => {
            if (node.tagName === 'IFRAME') node.remove();
        });
    });
});

iframeObserver.observe(document.body, { childList: true, subtree: true });

二、原脚本问题分析

你之前的脚本未生效,核心原因是:

  • @match规则错误:https://www.exemple*无法精准匹配www.exemple.com的页面,必须改为https://www.exemple.com/*才能覆盖目标网站的所有页面
  • 依赖外部库可能引入兼容性问题,原生JS实现更稳定可靠

三、方案细节说明

关于iframe屏蔽

  • 优先使用GM_addStyle注入CSS,这种方式最高效,能直接拦截静态和动态加载的iframe,!important确保样式优先级高于网站原有样式
  • 额外添加MutationObserver监听是为了彻底移除iframe元素(而非仅隐藏),按需启用即可

关于dodo元素移除

  • 初始调用removeDodo()处理页面加载时已存在的静态元素
  • MutationObserver监听DOM变化,拦截后续动态添加的dodo元素,确保无遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:23:15