浏览中文网页时,把部分常见词替换成对应英文;悬停即可看到音标、释义、词根词缀拆解、例句,并给自己打分。评分会驱动 SM-2 间隔重复算法,决定每个词下次该在何时再次出现——让你在日常浏览中无痛记住单词。
这是一个纯本地、零追踪、无需账号的 Chrome / Edge(Manifest V3)扩展,复刻并增强自社区里一个同类插件的灵感。
🌐 在线体验(无需安装):imhw.github.io/worddrip/demo.html
浏览中文网页时,部分常见词被替换成英文——浅色 / 深色网页背景下都清晰可读:
悬停任意替换词,看到音标、释义、词根词缀拆解、例句,并给自己打分(驱动 SM-2 间隔重复):
设置页内置学习仪表盘——累计曝光、连续打卡、掌握度分布、30 天活跃热力图:
| 功能 | 说明 |
|---|---|
| 网页沉浸替换 | 遍历页面文本,把命中词库的中文词替换成英文。同一段落可替换多词,自动跳过输入框、代码块、已替换区域 |
| 悬停解码卡片 | 鼠标移上去显示:英文 / 音标 / 词性 / 释义 / 词根词缀拆解 / 例句 / 学习状态 / 下次复习时间 |
| SM-2 间隔重复 | 标准 SuperMemo-2 算法。四档反馈「忘了 / 模糊 / 认识 / 秒懂」更新难度系数与复习间隔,到期的词优先出现 |
| 状态可视化 | 替换词按学习状态着色:新词 / 学习中 / 复习中 / 已掌握,一眼看出熟练度 |
| 个性化策略 | 替换密度(轻 / 中 / 浓)、多词库勾选、音标开关、悬停自动朗读、网站黑名单 |
| 多场景词库 | 四级 / 六级 / 考研 / 雅思托福,可任意组合 |
| 学习仪表盘 | 累计曝光、主动复习、已掌握、连续打卡天数、近 30 天活跃热力图 |
| 数据自主 | 一键导出 / 导入 JSON 备份;所有数据只存在本机,绝不上传 |
| 发音 | 卡片内 🔊 或悬停自动朗读(Web Speech API,离线可用) |
- 下载本仓库(
git clone或 Code → Download ZIP 后解压) - 打开
chrome://extensions(Edge 为edge://extensions),右上角打开「开发者模式」 - 点击「加载已解压的扩展程序」,选择
worddrip文件夹 - 随便打开一个中文网页,部分词会变成英文——把鼠标移上去试试
改了代码后,回扩展页点该扩展的刷新图标 ⟳ 即可应用,无需重装。
从 Releases 下载 worddrip-vX.Y.Z.zip,解压后按方式一的第 2–3 步加载解压目录。
首次安装会自动打开设置页。点击工具栏图标可快速调节开关、密度与词库。
bash scripts/package.sh
# 打包前自动校验,产物输出到 dist/worddrip-vX.Y.Z.zip脚本只收录扩展运行所需文件 + README/LICENSE,排除演示页、测试与开发文件。
直接在浏览器打开 demo.html 即可体验完整效果(内置一段示例文章 + 一个 chrome.storage 的 mock,复用真实的替换引擎):
cd worddrip
python3 -m http.server 8777
# 浏览器访问 http://localhost:8777/demo.html- 扫描:用
TreeWalker遍历可见文本节点,匹配词库中文词(含别名,长词优先)。 - 选词:把候选交给 SM-2,按「到期优先」挑出本轮要替换的词(受密度上限约束)。
- 替换:逐文本节点构建
DocumentFragment一次性替换,同一段落里的多个词都会被替换(这是相对常见实现的关键改进——逐个replaceChild会让同段后续词因节点脱离 DOM 而失败)。
替换期间会 disconnect MutationObserver、替换完再 reconnect,避免自己的 DOM 改动触发死循环;动态加载的新内容仍会被处理。
质量 q:0=忘了 3=模糊 4=认识 5=秒懂
q < 3 → reps 归零,interval 回到 1 天
q ≥ 3 → reps=1→1天, reps=2→6天, 之后 interval = round(interval × EF)
EF += 0.1 − (5−q)(0.08 + (5−q)·0.02),下限 1.3
interval ≥ 21 天且连对 ≥ 3 次 → 标记「已掌握」
worddrip/
├── manifest.json # MV3 清单
├── demo.html # 离线演示(无需安装扩展)
├── icons/ # 16/48/128 图标
└── src/
├── data/wordbank.js # 词库(200 词,含词根 / 例句 / 等级)
├── lib/srs.js # SM-2 间隔重复算法
├── content/ # 内容脚本:扫描 + 替换 + 悬停卡片
│ ├── content.js
│ └── content.css
├── background/background.js# service worker:默认设置 + 图标徽标
├── popup/ # 工具栏弹窗:开关 / 密度 / 词库 / 当日统计
└── options/ # 设置与数据页:仪表盘 / 词表 / 黑名单 / 导入导出
往 src/data/wordbank.js 数组里加条目即可,无需改动其它代码:
{
w: "example", // 英文
zh: "例子", // 用于在中文网页匹配
ipa: "/ɪɡˈzɑːmpl/", // 音标
pos: "n.", // 词性
lv: ["CET4"], // 等级标签,决定它属于哪个词库
root: "ex-(出) + ample(拿取) → 取出来给人看的样本", // 词根/词源/助记
ex: ["This is a good example.", "这是个好例子。"], // 例句 [英, 中]
alt: ["示例", "范例"] // 可选:额外可匹配的中文写法
}- 不请求任何网络权限,不收集、不上传任何数据。
- 所有学习记录与设置都通过
chrome.storage.local保存在你本机浏览器中。 - 网站黑名单里的域名完全不会被处理。
MIT —— 自由使用、修改、分发。



