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

时间:2012-01-18 21:20:47

标签: iframe google-chrome-extension

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

谢谢!

2 个答案:

答案 0 :(得分:34)

是的,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
    }
  ],
  ...
}

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

答案 1 :(得分:2)

在清单中 (使用"all_frames": true定义的内容脚本将在新创建的iframe上运行。重要的是,每一帧都将开始新的导航,并且计划在该点插入内容脚本。

相反,如果您使用chrome.tabs.executeScript() 动态注入代码,则该代码只会被注入到您调用它时出现的帧中。如果您想跟上新框架,则需要某种机制来检测新框架(Mutation观察者?webNavigation API?)。