16

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

问:有没有一种方法可以从 Chrome 内容脚本扩展访问在 iframe 中呈现的 HTML?如果是,我应该指定哪些权限和其他清单选项?谢谢。

4

2 回答 2

39

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

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

于 2010-10-14T20:53:13.497 回答
10

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

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

于 2011-03-09T15:36:00.183 回答