Chrome扩展程序可删除iframe中的DOM元素

gui*_*ler 2 iframe google-chrome-extension

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

我的研究表明,由于具有相同的来源政策,因此无法通过通用JavaScript来实现。

据我所知,在Chrome浏览器中从代码检查中手动删除DOM元素是可行的,但是我想实现自动化。

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

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

HTML示例:

<!DOCTYPE html>
<html>
<body>
    <iframe src="iframe.htm"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

iframe.htm

<!DOCTYPE html>
<html>
<body>
    <div id="targetDiv"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

最终结果应与运行(使用jQuery)相同:

$('#targetDiv').remove();
Run Code Online (Sandbox Code Playgroud)

哪个当然行不通。

gui*_*ler 5

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

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
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

它具有一些不言自明的值,然后具有permissionscontent_scripts。基本上说,此扩展名仅在访问target-site.com时有效。我们指定要运行的文件,然后设置"all_frames": true,该文件将为页面中的每个帧运行。

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

导航至chrome://extensions/加载解压缩的扩展程序或对其进行打包。

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