假设我有一个基于框架的网页,它看起来像这样:
+-------------+---------------------------------------------------------+
| | header |
| +---------------------------------------------------------+
| | |
| | |
| | |
| | |
| | |
| | main |
| menu | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| +---------------------------------------------------------+
| | footer |
+-------------+---------------------------------------------------------+
如您所见,有一个名为main
的框架。当用户在menu
框架中单击菜单itesm时,可以在main
框架中加载任何页面(任何URL)。现在我想要的是在main
帧中加载的页面中运行一段代码。正如我所描述的那样,将在main
框架中加载的页面没有URL模式,因此我无法在greasemonkey
脚本中指定模式。有没有办法做到这一点?
感谢。
答案 0 :(得分:0)
问题不明确。如果你的意思是老式的(在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>
,然后你必须将Greasemonkey脚本设置为触发可能在“主”框架中打开的所有可能页面。
这是一种方法:
// ==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.
}
}
重要:强>
@include *
。尽可能多地调整@include
,@exclude
和@match
语句,只在您希望加载到名为“main”的框架中的页面上运行。