ExtensionManagerExt — 浏览器扩展管理工具

ExtensionManagerExt — 浏览器扩展管理工具

一个 Chrome/Edge 浏览器扩展,用于集中管理所有已安装的扩展。弥补了浏览器自带扩展管理功能的不足。

痛点

浏览器自带的扩展管理页面(chrome://extensions/)功能非常有限:

  • 只能看到一个平铺列表,无法搜索或筛选
  • 想临时禁用一批扩展只能逐个操作
  • 没有分组功能,几十个扩展混在一起
  • 不知道哪些扩展偷偷更新了或状态变了

ExtensionManagerExt 解决了这些问题。

核心功能

概览面板

打开扩展即可看到所有已安装扩展的卡片列表,顶部显示总数、启用数、禁用数统计。每个卡片展示扩展的图标、名称、描述和状态。

[!NOTE]
管理工具会自动隐藏自身,不会在列表中展示。

启用/禁用管理

  • 每个扩展卡片上有开关按钮,一键切换启用/禁用
  • 支持「全部启用」和「全部禁用」批量操作
  • 监听外部变化,从 chrome://extensions 或其他工具修改的状态会实时同步

搜索与筛选

  • 实时搜索(150ms 防抖),按扩展名称或描述匹配
  • 按状态筛选:全部 / 启用 / 禁用
  • 按安装类型筛选:商店 / 开发者模式
  • 按收藏筛选:已收藏 / 未收藏
  • 按分组筛选:可按自定义分组过滤
  • 排序:默认、名称 A-Z、名称 Z-A、启用优先、禁用优先

收藏的扩展始终排在列表最前面。

开发者扩展快捷操作

对于开发者模式安装的扩展,卡片上会额外显示重载按钮,一键执行禁用-启用循环,省去去 chrome://extensions 页面点击刷新。

自定义分组

可以为扩展创建自定义分组,每个分组有名称和颜色标识:

  • 创建、编辑、删除分组
  • 扩展卡片上显示分组色标
  • 按分组过滤扩展
  • 删除分组不会卸载扩展

批量操作模式

进入批量模式后:

  • 每个卡片显示复选框
  • 全选/取消全选
  • 批量启用、禁用、收藏、取消收藏
  • 批量卸载:逐个处理,可中途取消,完成后给出成功/失败/取消的汇总报告

扩展详情面板

点击任意扩展卡片打开详情面板:

  • 完整权限列表(翻译为中文可读名称)
  • 跳转到 Chrome/Edge 扩展商店页面
  • 固定到工具栏的操作指引
  • 卸载按钮(带确认弹窗,管理工具自身不允许卸载自己)
  • 分组分配下拉框
  • 备注文本框:可为扩展添加自由文本备注,持久化保存

变更检测

每次打开时截取扩展列表快照,与上次对比:

  • 检测新安装的扩展
  • 检测被卸载的扩展
  • 检测启用/禁用状态变化(包括外部操作)
  • 在顶部通知栏展示变更列表,点击查看详情

这个功能在排查”某个扩展突然不工作了”时特别有用。

操作历史

  • 两个标签页:启用/禁用历史 + 卸载历史
  • 每条记录显示操作类型、扩展名称、ID、相对时间
  • 卸载历史额外记录该扩展曾归属的分组和备注
  • 各保留最近 100 条记录
  • 支持按名称或 ID 搜索

数据导入导出

  • 导出为 JSON 文件:分组、备注、历史、收藏状态
  • 可选择性导出(勾选需要的数据类型)
  • 导入支持合并模式(与现有数据合并)和替换模式(完全覆盖)

侧边栏视图

除了 popup 弹窗,还支持浏览器的侧边栏面板:

  • 列表/网格视图切换
  • 网格模式显示紧凑卡片,适合扩展数量多的场景
  • 详情面板并排展示,不会遮挡列表

技术实现

纯原生 JavaScript 实现,无任何框架依赖。基于 Manifest V3。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 扩展管理类核心结构
class ExtensionManager {
constructor() {
this.extensions = []; // 扩展列表
this.groups = []; // 自定义分组
this.starred = []; // 收藏状态
this.history = []; // 操作历史
}

// 加载所有扩展
async loadExtensions() {
const exts = await chrome.management.getAll();
this.extensions = exts.filter(e => e.id !== 'self');
this.render();
}
}

使用的 Chrome API:

API 用途
chrome.management 获取/启用/禁用/卸载扩展
chrome.storage.local 持久化所有用户数据
chrome.tabs 打开扩展商店页面
chrome.sidePanel 侧边栏面板支持

国际化

自建 i18n 模块,支持中文和英文切换。通过 data-i18n 属性声明式翻译 HTML 内容,运行时加载语言文件。

安装使用

  1. 浏览器打开 chrome://extensions/(Edge 为 edge://extensions/
  2. 开启「开发者模式」
  3. 点击「加载已解压的扩展」,选择 ExtensionManagerExt 目录
  4. 点击工具栏图标即可打开

设计愿景

README 中还规划了后续方向:

  • 扩展性能监控(内存/CPU 占用)
  • 工作模式预设(一键切换多组扩展的启用状态)
  • 扩展推荐
  • 跨设备同步
  • 安全扫描(可疑权限、过期扩展)

目前的 v1.1.0 已实现核心管理功能,后续按需迭代。

🤖 AI 博客助手
你好!我是博客 AI 助手,可以回答关于博客文章内容的问题。试试问我吧~