是否可以将一个greasemonkey脚本自动加载到网页中的所有iframe中?

时间:2011-09-14 12:44:44

标签: javascript greasemonkey

我有一个要求,我必须一次向10-15个表格提交相同/类似的数据。我想要做的是创建一个单独的页面,其中所有这些表单都被加载,并自动填写所有已知的值...最终用户只需要填写为这15个表单显示的验证码...现在我想要每个表单的提交响应将加载到同一网页中的iframe中。

在此之后,我希望将一个简单的js加载到每个iframe中,该iframe从父文档中读取一些数据,以及响应Web页面的整个内容,并使用XMLHttpRequest将其发送到我的Web应用程序。 (Web应用程序将解析表单提交响应的内容,并查看提交是否成功)。

应该加载到每个iframe中的脚本(在主窗口内)应该读取iframe ID,主窗口中的一些div以及该iframe的整个内容,并将其作为POST请求发送到我的Web应用程序。

使用Greasemonkey可以实现这样的场景吗?请注意,最初加载带有iframe的网页时,在该阶段iframe为空白 - 在此阶段,iframe的数据不应发送到我的网络应用。只有在用户提交了所有10个表单并且iframe全部加载了相应的表单提交响应后,现在js应该将每个iframe中的数据发送到我的Web应用程序。

还有一个问题 - 目前我打算使用具有相应运行时参数的Google Chrome来禁用相同的原始策略...但是如果上述方案可以使用Greasemonkey脚本实现,那么我是否需要在Firefox中禁用同源策略也?此外,Firefox中有一个扩展,可以将CORS启用程序添加到网页中,我可以将该脚本与上述场景的代码结合使用,这样即使iframe与主窗口相比具有不同的域,即使这样,每个iframe的数据也是如此提交了?

1 个答案:

答案 0 :(得分:1)

1- Greasemonkey脚本加载到与您的站点过滤器匹配的每个页面和iframe。 您可以使用以下命令阻止它运行主窗口:

if(window == window.top) return;
// else do the rest

2-您可以使用window.parent访问父窗口及其内容。并使用iframe的.contentWindow属性从Parent访问iframe。 (如果他们保存域名)