怎样制作“别人家的”Chrome插件

  • Post category:Python

下面我会详细讲解如何制作“别人家的”Chrome插件。

1. 准备工作

首先,我们需要准备以下工具和环境:

  • Chrome浏览器
  • 开发者模式开启
  • 文本编辑器(例如VS Code)
  • 基本的HTML、CSS、JavaScript知识
  • 图片编辑软件(例如Photoshop)

2. 创建插件

步骤一:创建插件文件夹

我们需要在计算机上创建一个文件夹,用于存放插件文件。命名为 myplugin

步骤二:创建清单文件(manifest.json)

myplugin 文件夹中,创建一个名为 manifest.json 的文件。该文件包含了插件的元数据,必须存在于插件的根目录下。

{
  "manifest_version": 2,
  "name": "MyPlugin",
  "version": "1.0",
  "description": "我的第一个Chrome插件",
  "icons": {
    "16": "icon16.png",
    "48": "icon48.png",
    "128": "icon128.png"
  },
  "browser_action": {
    "default_icon": "icon48.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "storage"
  ]
}

在上述清单文件中,我们定义了以下内容:

  • manifest_version:告诉Chrome这是哪个版本的清单文件。
  • name:插件的名称。
  • version:插件的版本号。
  • description:插件的描述。
  • icons:插件图标的路径和尺寸。
  • browser_action:插件浏览器按钮的默认行为,比如点击按钮弹出一个页面等。
  • permissions:这个插件需要的权限。

步骤三:创建弹出页面(popup.html)

myplugin 文件夹中,创建一个名为 popup.html 的文件,它将作为插件的弹出页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>MyPlugin</title>
  <style>
    body {
      width: 200px;
      height: 200px;
      margin: 0;
      padding: 0;
      background-color: #f1f1f1;
      display: flex;
      justify-content: center;
      align-items: center;
    }
  </style>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

在上述代码中,我们定义了一个简单的弹出页面,包含了一个 h1 标题和一些样式。

步骤四:创建图标文件

myplugin 文件夹中,创建三个分别为 icon16.pngicon48.pngicon128.png 的图标文件,用于代表插件的图标。

3. 载入插件

步骤一:打开Chrome扩展程序

在Chrome浏览器的地址栏输入 chrome://extensions ,打开Chrome扩展程序页面。

步骤二:加载插件

点击左上角的 加载已解压的扩展程序 按钮,选择我们创建的 myplugin 文件夹,点击确定。

步骤三:查看插件

现在我们已经成功地在Chrome浏览器上载入了我们自己创建的插件,通过查看其图标,可以看到它出现在了工具栏上。

示例说明

下面看两条实例说明,让我们更具体的理解如何制作“别人家的”Chrome插件。

示例一:谷歌翻译

我们可以利用Google翻译提供的API,制作一个可以实现简单翻译功能的Chrome插件。

首先,我们需要根据谷歌翻译API的文档,获取到我们需要的API链接。

然后,新建一个名为 popup.html 的文件,内容为:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Google Translate</title>
  <script src="popup.js"></script>
</head>
<body>
  <textarea id="input" rows="5" cols="25"></textarea>
  <br>
  <button id="translate">翻译</button>
  <br>
  <textarea id="output" rows="5" cols="25" readonly></textarea>
</body>
</html>

在上面的代码中,我们需要新建一个用于输入文本的文本框(id=”input”),一个用于转换的翻译按钮(id=”translate”),以及一个用于输出结果的文本框(id=”output”)。

接下来,新建一个名为 popup.js 的文件,内容为:

document.getElementById('translate').addEventListener('click', function(){
  var input = document.getElementById('input').value;
  var xhr = new XMLHttpRequest();
  xhr.open('GET', 'https://translate.google.cn/translate_a/single?client=gtx&sl=auto&tl=zh-CN&dt=t&q=' + encodeURI(input));
  xhr.onreadystatechange = function (e) {
    if (xhr.readyState == 4 && xhr.status == 200) {
      var response = JSON.parse(xhr.responseText);
      var output = response[0][0][0];
      document.getElementById('output').value = output;
    }
  };
  xhr.send();
});

在上面的代码中,我们需要通过获取用户输入,向谷歌翻译API发送请求,将翻译结果返回。

最后更新我们的 manifest.json 文件:

{
  ...
  "permissions": [
    "activeTab"
  ],
  "browser_action": {
    "default_popup": "popup.html"
  }
  ...
}

这样就完成了一个简单的谷歌翻译插件。

示例二:页面抓取

假设我们需要从一个特定网站上爬取某个内容,可以制作一个专用的Chrome插件。

首先,我们需要使用 content_scripts,来指定插件需要在哪个页面上运行。在清单文件中加上如下代码:

{
  ...
  "content_scripts": [
    {
      "matches": [
        "*://www.example.com/*"
      ],
      "js": [
        "content.js"
      ]
    }
  ],
  ...
}

在上面的代码中,我们指定了插件需要在 www.example.com 网站上运行,并且使用 content.js 文件来运行我们的代码。

接下来,新建一个名为 content.js 的文件,内容为:

var data = {};
data.name = document.querySelector('h1').innerText;
data.description = document.querySelector('.description').innerText;
data.price = document.querySelector('.price').innerText;
chrome.runtime.sendMessage(data);

在上面的代码中,我们需要通过获取特定页面上的元素信息,来爬取我们需要的数据,并通过 chrome.runtime.sendMessage() 函数向插件发送数据。

最后,在后台脚本中加入如下代码,处理我们需求数据:

chrome.runtime.onMessage.addListener(function (data) {
  console.log(data);
});

这样就完成了一个简单的页面抓取插件。

补充说明:以上示例为纯展示,具体实现可能还需要加入额外的逻辑判断、错误处理等相关内容。