Chrome扩展程序可以访问iframe吗?

Gar*_*ley 17 iframe google-chrome-extension

如果我在页面上编写一个运行JS片段的Chrome扩展程序,它是否也可以在我创建的任何iframe中运行?如果是这样,这是否适用于在DOM加载后由Javascript创建的iframe?

谢谢!

Ada*_*res 36

是的,Chrome扩展程序"内容脚本"可以在所有iframe中运行(最初在加载页面时位于HTML中).要使内容脚本在所有框架中运行,您需要使用以下all_frames属性在Chrome扩展程序manifest.json中对其进行配置:

http://code.google.com/chrome/extensions/content_scripts.html

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"],
      "all_frames": true
    }
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)

不,内容脚本不会在通过页面中的JavaScript动态加载的iframe中执行.

  • 从我的实验中看来,内容脚本*do*在新创建的iframe中执行...还要注意它正在运行contentscript.js的单独副本,每个iframe一次(尽管它们理论上可以通过消息传递相互通信) ,一次为主要文件...... (2认同)

Xan*_*Xan 6

清单中定义的内容脚本(带有"all_frames": true)将在新创建的 iframe 上运行。重要的是,每个帧都会启动一个新的导航,并且内容脚本计划在此时注入。

相反,如果您使用动态注入代码chrome.tabs.executeScript(),那么它只会被注入到您调用它时存在的帧中。webNavigation如果你想跟上它们,你需要一些机制来检测新帧(突变观察者? API?)。