如何在 Greasemonkey 或 Tampermonkey 中排除 iframe?

IT技术 javascript greasemonkey tampermonkey
2021-02-25 19:16:18

我为一个网站创建了一个 Greasemonkey 脚本。脚本所做的是在页面末尾添加一个 div。

document.body.insertBefore(myDiv, document.body.firstChild);

但是现在该网站为 google-ads 添加了 iframe,结果我的 div 也出现在 iframe 中,这不是我想要的。

如何停止影响 iframe 的脚本?

2个回答

我把它放在脚本的顶部以避免在框架或 iframe 上运行:

if (window.top != window.self)  //don't run on frames or iframes
    return;

Greasemonkey 现在支持@noframes指令(由 Tampermonkey 和 Scriptish 长期支持)。
使用它可以更清晰地阻止 iframe 中的操作。


不幸的是,npdoty 的回答现在会在 Firefox 的浏览器控制台中触发警告:

警告:在函数之外使用 return 已被弃用,并且可能会导致 Greasemonkey 的未来版本出现故障。

该警告不是问题,您只需要将脚本包装在一个匿名函数中:(function(){ ... })();,无论如何这是一个很好的做法。谢谢你@noframes,upvoted。
2021-04-22 19:16:18
改变了我的接受度。感谢您提供更优雅的方式。
2021-05-06 19:16:18