首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用@include对iframe使用Greasemonkey --这行得通吗?

使用@include对iframe使用Greasemonkey --这行得通吗?
EN

Stack Overflow用户
提问于 2009-11-05 08:11:14
回答 1查看 6.6K关注 0票数 9

我想知道你是否可以只对一个iframe而不是它的父窗口执行Greasemonkey。父窗口是域A,iframe是域B,脚本中的include是@include http://domain-B.com/path/*。

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

PS: iframe的JS代码阻止它作为顶部窗口加载。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-05 16:29:18

当然,可以让Greasemonkey在iframe上运行--实际上,它是一个common question,用来确定如何阻止它在iframe和主页上执行。你应该能够反其道而行之,以防止代码在顶部窗口执行:

代码语言:javascript
运行
复制
if (window.top == window.self)  //don't run on the top window
    return;
//rest of the actual executing code goes here

我已经测试过了,您可以使用@include来匹配域B(iframe的域),然后运行一段修改它的任意代码。我在test page上运行了下面的测试用户脚本,它成功地隐藏了谷歌的徽标(仅当谷歌在iframe中时)。

代码语言:javascript
运行
复制
// @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();
});

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1677558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档