从 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 的内容