Javascript 有没有办法通过Greasemonkey在命名的框架(而不是所有框架)中运行我的JS代码?

Javascript 有没有办法通过Greasemonkey在命名的框架(而不是所有框架)中运行我的JS代码?,javascript,frame,greasemonkey,Javascript,Frame,Greasemonkey,假设我有一个基于框架的网页,它看起来像这样: +-------------+---------------------------------------------------------+ | | header | | +---------------------------------------------------------+ |

假设我有一个基于框架的网页,它看起来像这样:

+-------------+---------------------------------------------------------+
|             |           header                                        |
|             +---------------------------------------------------------+
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |           main                                          |
| menu        |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             |                                                         |
|             +---------------------------------------------------------+
|             |           footer                                        |
+-------------+---------------------------------------------------------+
如您所见,有一个名为
main
的框架。当用户单击
菜单
框架中的菜单itesm时,可以在
框架中加载任何页面(任何URL)。现在我想在
main
框架中加载的页面中运行一段代码。如前所述,将在
main
框架中加载的页面没有URL模式,因此我无法在
greasemonkey
脚本中指定模式。有办法吗


谢谢。

问题不清楚。如果您指的是老式(在HTML5中是过时的)框架集,如:

<frameset ...>
    <frame name="header" src="header.htm"           ></frame>
    <frame name="menu"   src="menu.htm"             ></frame>
    <frame name="main"   src="ANY_DOMAIN/page.htm"  ></frame>
    <frame name="footer" src="footer.htm"           ></frame>
</frameset>

重要提示:

  • 只能在万不得已的情况下使用
    @include*
    。尽可能多地调整
    @include
    @exclude
    @match
    语句,使其仅在希望加载到名为“main”的框架中的页面上运行
  • 如果这些帧都是同一个域,那么您有更多的选择。您只需运行框架集页面,并根据需要向框架中注入代码。为此提出一个新问题
  • 在Firefox中使用版本4.01 DOCTYPEs进行测试。其他浏览器和HTML5可能不同或不可能

  • 我会给“main”框架一个
    onload
    事件监听器,这样当在其中加载一个新页面时,就会调用一个函数。
    // ==UserScript==
    // @name     _Fire on any page, but only when it is the frame named "main"
    // @include  *
    // ==/UserScript==
    
    //-- Run in (i)framed page only, not in parent page.
    if (window.top != window.self) {
        if (window.name == "main") {
    
            // PLACE YOUR DESIRED CODE HERE.
        }
    }