我正在编写一个Chrome扩展程序,需要在加载时更改流行的网络应用程序。不幸的是,该网络应用的大部分用户界面都是在iframe中呈现的,虽然该iframe的地址与我的content_scripts
匹配声明相匹配,但只会为顶部框架调用用户脚本。
答案 0 :(得分:39)
我已经解决了这个问题。必须在manifest.json的content_scripts部分中指定以下选项:"all_frames": true
。没有它,脚本仅应用于顶部框架。
//有时候只需要小心翼翼地进行RTFM。
答案 1 :(得分:8)
对于没有@src的iframe,偶数"all_frames": true
似乎没有帮助。错误http://code.google.com/p/chromium/issues/detail?id=20773中讨论了这一点,其中还介绍了一些解决方法,包括在源页面中获取iframe元素的contentDocument
,例如: $('a', $($("#canvas_frame")[0].contentDocument))
。
这个错误并不是你遇到的问题(你想在iframe中加载你的内容脚本,而不是在iframe和外框之间进行交互)但我认为大多数有问题的人会有另外一个。