详解Elsevier-Tracker的manifest.json:Manifest V3权限与内容脚本配置清单
【免费下载链接】Elsevier-Tracker项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker
Elsevier-Tracker 是一款帮助作者实时跟踪 Elsevier(爱思唯尔)期刊投稿审稿状态的 Chrome 浏览器扩展。本文以 manifest.json 为蓝本,完整拆解Manifest V3 扩展中的两大核心配置:host_permissions(主机权限)与content_scripts(内容脚本),并给出一份新手可直接对照的权限配置清单。
📂 30秒看懂:扩展由哪几个文件组成
Elsevier-Tracker 结构非常精简,一个新手最该关注的就是下面三个文件:
| 文件 | 作用 |
|---|---|
| manifest.json | 扩展的"身份证":声明版本、权限、要注入的脚本 |
| content.js | 内容脚本:在 AuthorHub 审稿页拉取数据、渲染状态面板 |
| README.md | 功能介绍与安装说明 |
💡 记住一个核心概念:manifest.json 决定扩展"能去哪里、能做什么、何时做什么",其余文件都是被它调度的"执行者"。
🏷️ 基础字段:Manifest V3 的四个身份声明
manifest.json 开头的四个字段是整个扩展的地基:
| 字段 | 本项目取值 | 含义 |
|---|---|---|
manifest_version | 3 | 声明采用 Manifest V3 规范(Chrome 现行标准) |
name | Elsevier tracker | 扩展在浏览器中显示的名称 |
version | 1.0 | 版本号,用于区分更新 |
description | Helps users track the latest status... | 一句话描述功能 |
另外 icons 字段注册了 16 / 32 / 48 / 128 四种尺寸的图标(如extension_icon128.png),分别用于工具栏、扩展管理页等场景,属于 MV3 的推荐配置。
🔐 host_permissions:扩展"被允许访问"哪些域名
MV3 采用最小权限原则:扩展只有声明过的域名才能被脚本直接发起跨域请求。本项目的声明见 manifest.json#L6-L9:
"host_permissions": [ "https://tnlkuelk67.execute-api.us-east-1.amazonaws.com/*", "*://track.authorhub.elsevier.com/*" ]两条权限各有分工:
- AWS API 域名:扩展真正的数据源。content.js 会向
tracker/{uuid}接口发起fetch请求,拉取稿件的 JSON 数据。没有这条权限,请求会被浏览器拦截。 - AuthorHub 跟踪页:即用户粘贴 UUID 后打开的官方审稿页(
*://写法表示 http/https 都匹配)。声明它可以让扩展在该域下获得完整的页面级能力。
📌 新手要点:两条权限都是"够用就好"——没有申请*://*/*这种通配全网权限,这也是安装扩展时判断其是否"干净"的关键信号。
📝 content_scripts:扩展"往哪个页面注入、何时注入"
content_scripts是内容脚本的配置区,见 manifest.json#L10-L16:
| 字段 | 本项目取值 | 含义 |
|---|---|---|
matches | https://track.authorhub.elsevier.com/* | 注入范围:只匹配官方审稿跟踪页 |
js | content.js | 要注入的脚本文件 |
run_at | document_end | 注入时机:DOM 解析完成后执行 |
三个字段环环相扣:
matches比host_permissions更窄——内容脚本只在用户真正打开审稿页时才运行,其他网站完全不受影响;run_at: document_end是关键细节。content.js 需要往document.body追加 DOM 节点来构建浮动面板,若用document_start此时body还不存在,面板就会"注入失败";- 脚本本身做的事很简单:从 URL 读取
uuid参数 → 请求后端 → 在页面右上角渲染"Elsevier 审稿状态"面板,并附带一个可点击的"显示/隐藏审稿状态"按钮。
🖼️ 实际效果:内容脚本渲染出的状态面板
下面就是content.js注入后在 AuthorHub 页面上呈现的审稿状态跟踪面板,可见稿件信息、各 Revision 阶段以及每位审稿人的邀请/接受/完成时间与状态:
✅ 配置清单:Manifest V3 权限核对表
把上面的拆解浓缩成一张核对表,你可以拿它检查任何扩展的 manifest.json:
| 核对项 | 本项目配置 | 是否必要 |
|---|---|---|
manifest_version: 3 | ✔ 已声明 | MV3 必备 |
host_permissions数量 | 仅 2 条,指向真实依赖 | 符合最小权限原则 |
host_permissions是否含通配全网 | 无*://*/* | 加分项 ✔ |
content_scripts.matches是否精确 | 只匹配 1 个官方域 | 避免误注入 |
run_at时机是否与脚本逻辑匹配 | document_end配合 DOM 操作 | 正确 ✔ |
icons多尺寸注册 | 16/32/48/128 齐全 | 推荐配置 |
🚀 获取与本地安装:3步加载扩展
如果想亲手验证上面的配置,可按以下步骤操作:
- 克隆仓库(仓库地址:https://gitcode.com/gh_mirrors/el/Elsevier-Tracker);
- 打开 Chrome,进入地址
chrome://extensions/,右上角开启**"开发者模式"**; - 点击**"加载已解压的扩展程序"**,选择仓库目录即可看到 "Elsevier tracker" 出现在扩展列表中。
安装后访问带有uuid参数的 AuthorHub 跟踪页,内容脚本便会自动执行并显示状态面板。
⚠️ 新手常见的 3 个配置坑
matches写宽了:比如误写成*://*/*,内容脚本会注入到每一个网站,既拖慢网页又泄露脚本逻辑;run_at选错时机:脚本要操作 DOM 时却用了document_start,运行后"什么都不发生";host_permissions与脚本实际请求不一致:向未声明的域名fetch会被 MV3 直接拦截,控制台报 CORS/权限错误。
小结
Elsevier-Tracker 的 manifest.json 是一个教科书级的 MV3 精简配置:2 条精准的主机权限 + 1 个单域内容脚本 + 合理的注入时机,没有一处冗余权限。读懂这份清单后,你也能快速看懂、甚至独立写出其他浏览器扩展的权限配置。
<输出文章>
【免费下载链接】Elsevier-Tracker项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考