我正在编写一些诊断工具并尝试为其创建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文档内容中嵌入,这是第三方代码。
有什么想法吗?谢谢你的帮助。
答案 0 :(得分:2)
在Rob W
发表评论后,问题出在时机上。我试图在加载之前将脚本注入iframe。我在iframe上使用了onload
事件来确定应该调用executeScript
方法的时刻。
现在一切正常。谢谢Rob。