使用@include-对iframe执行Greasemonkey操作是否有效?

使用@include-对iframe执行Greasemonkey操作是否有效?,iframe,greasemonkey,Iframe,Greasemonkey,我想知道你是否可以让Greasemonkey只对iframe执行,而不是它的父窗口。父窗口是域A,iframe是域B,脚本中的include是@include* 我不需要和父母互动。我已经试过几次了,但都没有成功。是否有任何跨域限制阻止某人针对iframe执行 PS:iframe有JS代码,可以防止它作为顶部窗口加载。好吧,当然可以让Greasemonkey在iframe上运行——事实上,这是一个决定如何阻止它在iframe和主页上执行的问题。您应该能够采用与该答案相反的答案,以防止代码在顶部窗

我想知道你是否可以让Greasemonkey只对iframe执行,而不是它的父窗口。父窗口是域A,iframe是域B,脚本中的include是@include*

我不需要和父母互动。我已经试过几次了,但都没有成功。是否有任何跨域限制阻止某人针对iframe执行


PS:iframe有JS代码,可以防止它作为顶部窗口加载。

好吧,当然可以让Greasemonkey在iframe上运行——事实上,这是一个决定如何阻止它在iframe和主页上执行的问题。您应该能够采用与该答案相反的答案,以防止代码在顶部窗口上执行:

if (window.top == window.self)  //don't run on the top window
    return;
//rest of the actual executing code goes here
我已经对它进行了测试,您可以使用
@include
匹配域B(iframe的域)并运行一段任意代码来修改它。我在上运行了以下测试用户脚本,它成功地隐藏了Google徽标(仅当Google位于
iframe
中时)


据我所知,这里没有任何跨域限制。我不确定当第一次加载页面时(即Greasemonkey运行时),如果
iframe
不存在会发生什么情况。

由于浏览器中的跨域限制,domain-b永远不会执行。我无法读取DIV来确定是否存在某些内容。我希望@include domain-b会在iframe(即domain-b)上触发,因此我可以通过GM脚本访问标记。我将继续探索各种方法。好吧,它对我很有效:当我
@include
仅包含
iframe
域时,我可以在第三方域
iframe
上执行Greasemonkey脚本。我已经用示例代码和测试页面更新了我的答案。
// @include  http://www.google.com*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==

if (window.top == window.self)  //don't run on top window
    return;

alert('running on a frame');

$('img').each(function() {
  $(this).hide();
});