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

How to add content script to iframe document programmatically

本文关键字:添加 脚本 iframe 文档 编程 方式      更新时间:2023-09-26

我正在编写一些诊断工具并尝试为其创建chrome扩展程序。我有一个带有iframe的页面。iframe 包含铺设在diffrent domain上的站点。

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

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

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

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

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

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

有什么想法吗?感谢您的任何帮助。

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

现在一切正常。谢谢罗布。