2

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

我的研究表明,由于相同的来源政策,这通过普通的 javascript 是不可能的。

据我所知,从 Chrome 中的代码检查中手动删除 DOM 元素,但我想自动执行此操作。

从其他类似的问题(主要是这个)看来,Chrome 扩展程序应该能够做到这一点。我相信是最相似的问题,但尚未得到回答,也不是很清楚。

老实说,我可以从这里开始,但我认为其他人可能会从这个问题和答案中受益,即使我最终回答了自己。

示例 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();

这当然行不通。

4

1 回答 1

6

我完成了我想要的,所以这就是答案。

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/加载您的解压扩展或打包它。

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

于 2013-04-22T23:26:47.213 回答