我正在编写一个 Chrome 扩展程序,它需要在加载时更改流行的网络应用程序。不幸的是,该 Web 应用程序的大部分 UI 都是在 iframe 中呈现的,尽管该 iframe 的地址与我的content_scripts
匹配声明匹配,但用户脚本只会为顶部框架调用。
问:有没有一种方法可以从 Chrome 内容脚本扩展访问在 iframe 中呈现的 HTML?如果是,我应该指定哪些权限和其他清单选项?谢谢。
我正在编写一个 Chrome 扩展程序,它需要在加载时更改流行的网络应用程序。不幸的是,该 Web 应用程序的大部分 UI 都是在 iframe 中呈现的,尽管该 iframe 的地址与我的content_scripts
匹配声明匹配,但用户脚本只会为顶部框架调用。
问:有没有一种方法可以从 Chrome 内容脚本扩展访问在 iframe 中呈现的 HTML?如果是,我应该指定哪些权限和其他清单选项?谢谢。
我已经解决了这个问题。必须在 manifest.json 的 content_scripts 部分中指定以下选项:"all_frames": true
。没有它,脚本仅适用于顶部框架。
// 有时只需要小心地进行 RTFM。
在没有@src 的 iframe 的情况下,甚至"all_frames": true
似乎没有帮助。这在错误http://code.google.com/p/chromium/issues/detail?id=20773中进行了讨论,它还涵盖了一些解决方法,包括contentDocument
在源页面中获取 iframe 元素,例如$('a', $($("#canvas_frame")[0].contentDocument))
.
这个错误并不完全是您遇到的问题(您想在 iframe 中加载内容脚本,而不是在 iframe 和外框架之间进行交互),但我认为大多数遇到其中一个问题的人都会遇到另一个问题好。