Chrome插件开发
官方文档:Chrome 扩展开发文档
示例仓库:GitHub Chrome 扩展示例
技术栈
基础技术:HTML(界面)、CSS(样式)、JavaScript(逻辑),也可以使用框架开发。
核心配置文件:
manifest.json(定义扩展的元数据、权限和功能)。核心组件:
Service Worker(后台脚本),Content Scripts(内容脚本),UI(用户界面)消息传递:各模块之间的消息传递
浏览器 API:通过
chrome.* 命名空间调用(如chrome.tabs、chrome.storage)。
关键文件
manifest.json
{
"manifest_version": 3,
"name": "页面标题修改器",
"version": "1.0",
"description": "一个简单的标题修改插件",
"permissions": [
"activeTab"
],
"action": {
"default_popup": "popup.html",
"default_title": "修改页面标题"
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"background": {
"service_worker": "background.js"
},
...
}
借助浏览器可以实现以下功能:
修改网页内容(如广告拦截、样式修改)。
浏览器功能扩展(如快捷键、标签管理、下载工具)。
数据存储与同步(如密码管理、笔记工具)。
调用浏览器 API(如书签、历史记录、网络请求拦截)。
扩展程序在用户授权下运行,需明确声明权限(如访问特定网站、读取剪贴板),遵循安全沙箱机制,确保用户隐私。
chrome插件能力
1. 设计能力
操作项(popup/action)
控制插件图标在工具栏中的显示。
{
"action": {
"default_popup": "popup.html",
"default_title": "修改页面标题"
},
}

菜单项(Menus)
向 Google Chrome 的上下文菜单添加项。

侧边栏(Side panel)

2. 控制浏览器
借助 Chrome 的插件 API,可以改变浏览器的工作方式:
覆盖
Chrome 页面和设置项:Manifest.json 配置chrome_settings_overrides插件开发者工具:
Manifest.json 配置devtools_page显示通知:
chrome.notifications API管理历史记录:
chrome.history API控制标签页和窗口:
chrome.tabs、chrome.tabGroups 和chrome.windows 等API键盘快捷键:
chrome.commands API身份认证:
chrome.identity API管理插件:
chrome.management API提供建议:
chrome.omnibox API更新
Chrome 设置:chrome.proxy API下载管理:
chrome.downloads API书签:
chrome.bookmarks API......
3. 控制网络
可以通过注入脚本、拦截网络请求以及使用 Web API 与网页进行交互,来控制和修改 Web:
注入
JS 和CSS 文件访问当前
Tab 页控制
Web 请求录音和屏幕截图
修改网站设置
Chrome 插件核心概念
使用 Web 平台和扩展 API,可以通过组合不同的界面组件和扩展平台功能来构建更复杂的功能。
1. Service Worker
Service worker 是一个基于事件的脚本,在浏览器后台运行。它通常用于处理数据、协调扩展中不同部分的任务,以及作为扩展的事件管理器。
2. Permissions 权限
插件在浏览器中获取的功能和数据访问权限,通过声明所需的权限,插件可以执行更广泛的操作。
权限最小化原则,需要哪些权限加哪些权限。
3. Content script 内容脚本
内容脚本是在网页环境中运行的文件,可以操作 DOM,读取浏览器访问网页的信息,对网页就行更改等。
4. Action/Popup
浏览器工具栏中显示的图标或按钮,用户可以单击该图标或按钮来执行插件提供的功能或操作。
5. 消息传递
一般来说,消息传递是指 action、content script、service worker 三者之间进行消息传递。
正式由于沙箱机制的处理,Chrome 扩展的不同组件运行在独立的上下文中,彼此权限不同:
6. Storage 存储
Chrome 插件有一个专门的 storage API,用来进行数据存储。
7. 匹配模式
在开发 Chrome 插件时,可以使用的一种模式匹配语法,用于指定插件的内容脚本或页面操作脚本在哪些 URL 匹配模式下执行