2010-10-14 121 views
15

我在写一个Chrome扩展,需要在加载时更改流行的Web应用程序。不幸的是,该Web应用程序的大多数用户界面都在iframe中呈现,虽然该iframe的地址与我的content_scripts匹配声明相匹配,但只会为顶层框架调用用户脚本。从Chrome内容脚本扩展访问内嵌框架

问:是否有方法从Chrome内容脚本扩展中访问iframe中呈现的HTML?如果是,我应该指定什么权限和其他清单选项?谢谢。

+1

这与您有关吗? http://code.google.com/p/chromium/issues/detail?id=37920 – bzlm 2010-10-14 20:46:00

+1

不,它不是。 iframe不是由扩展插件注入的,而是由原始的Web应用程序注入的。 – dpq 2010-10-14 20:48:15

回答

38

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

//有时候一个人只需要RTFM仔细。

+5

RTFM你节省我的F天 – 2012-09-17 02:13:34

8

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

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

相关问题