2013-03-19 88 views
1

我想知道创建Google Chrome扩展程序所需的所有组件和步骤,这些扩展程序可以从某个页面内的iframe中删除某些DOM元素。Chrome扩展程序删除iframe中的DOM元素

我的研究表明,由于相同的原产地政策,这不可能通过常见的JavaScript。

手动删除在Chrome中检查代码的DOM元素是据我得到的,但我想自动执行此。

从其他类似的问题(主要是this one),看来Chrome扩展程序,应该是能够做到这一点。 我认为this是最类似的问题,但至今尚未得到答复,也不太清楚。

坦率地说,我可以把它从这里,但我认为其他人可能会受益于这个问题和答案,即使我最终回答自己。

例HTML:

<!DOCTYPE html> 
<html> 
<body> 
    <iframe src="iframe.htm"></iframe> 
</body> 
</html> 

而且iframe.htm

<!DOCTYPE html> 
<html> 
<body> 
    <div id="targetDiv"></div> 
</body> 
</html> 

最终结果应该是相同的运行(使用jQuery):

$('#targetDiv').remove(); 

这当然不工作。

+0

“主要这一个”链接涵盖了你需要的一切。虽然它可以更简单,你甚至不需要jQuery。 – 2013-03-19 20:58:44

回答

4

我完成了我想要的东西,所以这里是答案。

你需要的Chrome扩展的第一件事就是清单文件,manifest.json。 这里是一个工作示例:

{ 
    "manifest_version": 2, 

    "name": "iframe manipulation extension example", 
    "description": "This extension allows to run scripts that manipulate cross domain IFRAME contents.", 
    "version": "1.0", 

    "permissions": [ 
    "*://target-site.com/*" 
    ], 
    "content_scripts": [ 
    { 
     "matches": [ 
     "*://target-site.com/*" 
     ], 
     "js": ["script.js"], 
     "all_frames": true 
    } 
    ] 
} 

它有一些不言自明的值,然后permissionscontent_scripts。 它基本上说这个扩展只会在访问target-site.com时才起作用。 我们指定我们想要运行的文件,并设置"all_frames": true,它将运行页面中每个帧的文件。

你当然可以在清单中引用的文件中运行所需的任何JavaScript。

导航到chrome://extensions/加载你正在开发的扩展或包装。

请注意,还有其他方法可以获得运行脚本的扩展。这正是我最简单的方法。