3

我有一个 Greasemonkey 功能,可以在我的浏览器访问的每个网站上创建一个按钮。

我想防止在访问网站的主窗口的所有子窗口中发生这种情况。(现在该按钮显示在诸如adsense窗口或论坛中的输入文本区域之类的子窗口上,当我在一个网站上时可以多次看到它)。

如何将此功能限制在网站的主窗口中?

4

1 回答 1

4

那些“子窗口”是<iframe>s。
查看类似问题:


Greasemonkey 将在 iframe 上运行,就像它们是主页一样 - 如果 iframe 与脚本的@include@exclude@match指令匹配。

要解决子窗口/iframe 问题:

  1. 调整您的@include@excluderules和/或您的@match指令,以尽可能多地消除不需要的 iframe。
    尽量避免在每个页面上运行脚本。

  2. 如果只需要顶窗操作,请使用@noframes指令。

  3. 要在函数级别进行控制,而不是整个脚本,您可以使用如下代码:

    if (window.top === window.self) {
        // CODE TO RUN ON MAIN PAGE
    }
    else {
        // CODE TO RUN IN IFRAME
    }
    
于 2013-04-10T22:10:57.170 回答