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 匹配模式下执行