如何防止在子窗口中执行Greasemonkey函数?

时间:2013-04-10 18:18:25

标签: javascript iframe greasemonkey

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

我想在访问过的网站主窗口的所有子窗口中防止这种情况发生。 (现在按钮显示在subwindows上,如adsense窗口或在论坛中输入textareas,当我在一个网站上时,我可以看到它几次。)

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

1 个答案:

答案 0 :(得分:4)

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


如果iframe符合您脚本的@include@exclude@match指令,那么Greasemonkey将在iframe上运行,就好像它们是主页一样。

解决子窗口/ iframe问题:

  1. 调整您的@include, @exclude rules和/或@match directives以消除尽可能多的不受欢迎的iframe。
    尽量避免在每个页面上运行脚本。

  2. 如果只需要顶窗操作,请使用the @noframes directive

  3. 要在功能级别控制,而不是整个脚本,您可以使用以下代码:

    if (window.top === window.self) {
        // CODE TO RUN ON MAIN PAGE
    }
    else {
        // CODE TO RUN IN IFRAME
    }