Chrome扩展程序无法将内容脚本注入动态生成的iframe

时间:2016-03-18 09:45:50

标签: google-chrome-extension

我想访问某个页面上所有iframe中的performance.getEntries(我的目的是深入了解banner标签内部的内容)。但是,我似乎无法在动态生成的iframe中注入内容脚本。

我在下面的例子中做错了吗?

或者是否有可能为这些动态生成的帧获取performance.getEntries的其他途径?

考虑一个非常简单的html:

<html>
<body>
<script>
    var iframe = document.createElement('iframe');
    var html = '<body><img src="http://dummyimage.com/100x200/333/fff&text=hey_2_1"><img src="http://dummyimage.com/100x200/555/fff&text=hey_2_2"></body>';
    iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
    document.body.appendChild(iframe);
</script>
<img src="http://dummyimage.com/100x200/333/fff&text=hey_1_1">
<img src="http://dummyimage.com/100x200/333/fff&text=hey_1_2">
</body>
</html>

像这样的扩展

的manifest.json

{
  "manifest_version": 2,
  "name": "Banner Spy 1",
  "description": "Check all iframes",
  "version": "1.0",
  "background": {
  "scripts": ["background.js"]
},
  "content_scripts": [
  {
    "run_at": "document_end",
    "all_frames" : true,
    "match_about_blank": true,
    "matches": ["<all_urls>"],
    "js": ["content_frame.js"]
  }
  ],
  "permissions": [
    "tabs",
    "activeTab",
    "<all_urls>"
  ]
}

content_frame.js

setTimeout(function(){
  var pe = performance.getEntries();
  console.log(pe);
}, 1000);

运行此扩展程序只会显示首页的效果条目,而不会显示动态iframe。

0 个答案:

没有答案