如何以编程方式将内容脚本添加到iframe文档

时间:2012-08-11 13:05:08

标签: javascript google-chrome iframe google-chrome-extension

我正在编写一些诊断工具并尝试为其创建chrome扩展。我所拥有的是一个带有iframe的页面。 iframe包含位于diffrent domain的网站。

我需要的是这两个网站之间的通信。我想到的是,我可以简单地为每个文档添加content script(到iframe文档和我的顶级窗口文档),并通过background script和消息流设置它们之间的通信。

问题是我现在不知道iframe中文档的地址是什么,用户可以将多个不同页面放入iframe。因此,我无法使用content script文件添加manifest.json,因为我不知道要将哪些内容放入matches属性。

我尝试使用chrome.tabs.executeScript方法,并将allFrames标志设置为true。当iframe文档与顶部窗口文档位于同一域时,它工作正常,但是当它在不同的域上时,它不会将content script添加到框架文档。

问题很奇怪,因为如果我在设计时知道iframe网址,那么我可以像清单文件中那样添加这些脚本......

如何在这种情况下将内容脚本添加到iframe文档?

我还会告诉您,我有权访问manifest.json文件中的每个页面。它像这样:"permissions": ["tabs", "http://*/", "https://*/"]。另外一个障碍是我无法在iframe文档内容中嵌入,这是第三方代码。

有什么想法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

Rob W发表评论后,问题出在时机上。我试图在加载之前将脚本注入iframe。我在iframe上使用了onload事件来确定应该调用executeScript方法的时刻。

现在一切正常。谢谢Rob。