Chrome插件manifest.json完全详解

606 阅读3分钟

今天要讲解的是Chrome插件开发中的一个非常关键的文件——manifest.json。如果你正在研究如何开发Chrome插件,这篇文章将为你提供全面而详细的指导。

manifest.json的作用

在Chrome插件开发中,manifest.json文件起到元数据的作用,它定义了一系列必要的信息,使得Chrome浏览器能正确地识别和加载你的插件。这个文件是必须的,它像一张“身份证”,告诉浏览器这个插件是什么、能做什么、需要什么权限等。

常用的字段配置及其含义

必要字段

  1. manifest_version: 清单文件的版本。目前主要有版本2和版本3。例如:"manifest_version": 2。
  2. name: 扩展的名称。例如:"name": "My Awesome Extension"。
  3. version: 扩展的版本号。例如:"version": "1.0"。

可选字段

  1. description: 关于扩展的简短描述。例如:"description": "This extension does amazing things!"。
  2. icons: 包含图标大小和相应图标文件路径的对象。
  3. background: 定义扩展的后台页面或后台脚本。
  4. permissions: 描述了扩展需要的权限,例如:"permissions": ["tabs", "storage"]。
  5. content_scripts: 定义应该在哪些网页上注入哪些脚本。
  6. browser_actionpage_action: 在工具栏中添加一个按钮,并定义其行为和外观。
  7. commands: 定义快捷键命令。
  8. options_page: 扩展的选项页面。
  9. content_security_policy: 定义扩展内容的安全策略。
  10. web_accessible_resources: 列出扩展中哪些资源可以被网页访问。
  11. default_locale: 默认的本地化设置。
  12. oauth2: OAuth2.0认证配置。

常用的permissions列表

  1. activeTab: 访问当前活动标签页的信息和修改其内容。适用于浏览器动作和页面动作。
  2. tabs: 提供了全面的对标签的访问权限,包括访问所有打开的标签页和窗口。
  3. storage: 使用chrome.storage API来存储、检索和跟踪改变。
  4. http://*/* , https://*/* : 可以通过XHR等方式访问对应模式的网站内容。
  5. bookmarks: 用于创建、组织或者删除书签。
  6. cookies: 访问或修改用户的cookies。
  7. history: 访问或删除浏览记录。
  8. downloads: 程序可以管理文件下载操作。
  9. notifications: 显示桌面通知。
  10. contextMenus: 在浏览器的上下文菜单中添加自己的选项。
  11. webRequest, webRequestBlocking: 查看和修改HTTP请求。
  12. alarms: 使用或创建定时提醒。
  13. clipboardRead, clipboardWrite: 读取或修改剪贴板内容。
  14. idle: 检测用户活动状态。
  15. geolocation: 访问地理位置信息。
  16. background: 在后台运行脚本。

每个权限都开放了一定范围的API,用于实现对应的功能。比如,如果你有tabs权限,你就可以访问chrome.tabs API来操作浏览器标签。

permissions字段是Chrome插件开发中非常关键的一部分,因为它决定了你的插件能做什么。下面是一些常用的permissions及其解释:

常用配置案例解析

以一个简单的页面截图工具为例,其manifest.json配置可能如下:

{
  "manifest_version": 2,
  "name": "Screenshot Taker",
  "version": "1.0",
  "description": "Take screenshots easily",
  "permissions": ["activeTab"],
  "icons": {
    "48": "icon48.png",
    "128": "icon128.png"
  },
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  }
}

解析

  • manifest_version: 使用的是V2版本。
  • name: 插件的名字是Screenshot Taker。
  • version: 版本号为1.0。
  • description: 一个简单的描述。
  • permissions: 只需要访问当前活动标签的权限。
  • icons: 定义了两个不同大小的图标。
  • browser_action: 定义了一个默认的图标和点击后弹出的页面。

这个简单的配置文件让我们创建了一个可以捕捉当前标签页面的插件,并且在工具栏中有一个可点击的图标。