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”的框架中的页面上运行我会给“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.
}
}