从 Chrome 内容脚本扩展访问 iframe

Posted

技术标签:

【中文标题】从 Chrome 内容脚本扩展访问 iframe【英文标题】:Accessing iframes from a Chrome content-script extension 【发布时间】:2011-04-25 15:21:58 【问题描述】:

我正在编写一个 Chrome 扩展程序,它需要在加载时更改流行的网络应用程序。不幸的是,该 Web 应用程序的大部分 UI 都是在 iframe 中呈现的,尽管该 iframe 的地址与我的 content_scripts 匹配声明匹配,但用户脚本只会为顶部框架调用。

问:有没有一种方法可以 中呈现的 html?如果是,我应该指定哪些权限和其他清单选项?谢谢。

【问题讨论】:

这与您有关吗? code.google.com/p/chromium/issues/detail?id=37920 不,不是。 iframe 不是由扩展程序注入的,而是由原始网络应用程序注入的。 【参考方案1】:

我已经解决了这个问题。必须在 manifest.json 的 content_scripts 部分中指定以下选项:"all_frames": true。没有它,脚本只会应用于顶部框架。

// 有时只需要小心地进行 RTFM。

【讨论】:

【参考方案2】:

即使"all_frames": true 在没有@src 的iframe 的情况下似乎也无济于事。这在错误http://code.google.com/p/chromium/issues/detail?id=20773 中进行了讨论,该错误还涵盖了一些解决方法,包括获取源页面中 iframe 元素的contentDocument,例如$('a', $($("#canvas_frame")[0].contentDocument)).

这个错误并不完全是您遇到的问题(您想在 iframe 中加载内容脚本,而不是在 iframe 和外框之间进行交互),但我认为大多数遇到其中一个问题的人都会遇到另一个也是。

【讨论】:

以上是关于从 Chrome 内容脚本扩展访问 iframe的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 jquery 访问通过 google chrome 内容脚本注入的 iframe 的内容

无法从 Chrome 扩展生成的 iframe 更改元素

如何允许 chrome 扩展访问第三方 API 脚本?

在 iFrame 中激活 Zurb Foundation 的 Joyride,来自 Chrome 扩展内容脚本

授予 Chrome 扩展程序访问 iframe 内容的权限

访问从不同来源加载的 iframe 的内容