在任意普通网页中打开墨墨背单词学习窗口。
本项目同时提供两种安装方式:
- Manifest V3 浏览器扩展版:适合 Chrome / Edge,功能独立、配置集中。
- Tampermonkey 油猴脚本版:适合已经使用 Tampermonkey、Violentmonkey 等脚本管理器的用户。
项目名称:
momo-float
GitHub:https://github.com/lyston11/momo-float
- 🦉 使用墨墨背单词官方猫头鹰图标
- 🪟 网页右下角悬浮窗,不离开当前页面即可学习
↔️ 悬浮球和学习窗口支持拖动- 📌 悬浮球支持自由停放,拖到左右边缘可半隐藏吸附
- ↻ 标题栏支持刷新学习页,不需要刷新宿主网页
- 🔗 支持在新标签页打开墨墨网页版
- 🔐 复用浏览器已有的墨墨登录 Cookie
- 🎫 自动读取动态学习地址和 token,不保存 token
- ✅ 自动识别测试须知、勾选确认并点击“开始学习”
- ⌨️ 支持快捷键显示答案、继续和评分
- 📐 支持调整窗口大小、最小化和关闭
- 🧩 使用 iframe bridge 与墨墨学习页面通信,并对消息来源进行校验
| 版本 | 适合用户 | 安装难度 | 主要特点 |
|---|---|---|---|
| 浏览器扩展版 | 希望独立安装、集中管理的用户 | 中等 | 有 popup、设置页和后台 service worker |
| 油猴脚本版 | 已经安装 Tampermonkey 的用户 | 简单 | 下载一个 .user.js 文件即可安装 |
同一个网页中建议只启用其中一种,避免同时出现两个悬浮球。
可以使用 Git 克隆:
git clone git@github.com:lyston11/momo-float.git也可以在 GitHub 项目页点击 Code → Download ZIP,下载后解压。
- 打开
chrome://extensions/ - 开启右上角的“开发者模式”
- 点击“加载已解压的扩展程序”
- 选择项目根目录
momo-float/
- 打开
edge://extensions/ - 开启“开发人员模式”
- 点击“加载解压缩的扩展”
- 选择项目根目录
momo-float/
- 打开任意普通
http://或https://网页 - 如果页面已经打开,请刷新一次网页
- 页面右下角会出现墨墨猫头鹰悬浮球
- 点击悬浮球打开学习窗口
- 第一次使用时,按提示登录墨墨网页版
扩展代码目录:
momo-float/
├── manifest.json
├── icons/
├── scripts/
└── src/
扩展更新后,在扩展管理页点击“重新加载”,再刷新当前网页。
脚本文件位于:
scripts/maimemo-floating-study.user.js
也可以直接打开 GitHub 中的脚本文件:
https://github.com/lyston11/momo-float/blob/main/scripts/maimemo-floating-study.user.js
- 安装脚本管理器:
- 打开上面的
.user.js文件 - 脚本管理器出现安装页面后,点击“安装”
- 打开任意普通
http://或https://网页 - 如果悬浮球没有出现,刷新当前网页
脚本需要的跨域权限由元数据声明,包括:
maimemo.com
www.maimemo.com
tc-apis.maimemo.com
脚本版本当前为 0.3.2。修改脚本文件后,在脚本管理器中重新保存或重新安装即可。
在学习窗口打开且焦点不在输入框时:
| 快捷键 | 功能 |
|---|---|
Alt/Option + M |
显示或隐藏悬浮窗 |
Space / Enter |
显示答案或继续 |
1 |
认识 |
2 |
模糊 |
3 |
忘记 |
+ / = |
放大窗口 |
- |
缩小窗口 |
Esc |
第一次最小化,再按一次关闭 |
- 新标签页:在新的浏览器标签页打开墨墨学习页
- 刷新
↻:重新获取登录状态、动态学习地址和 token,并重建学习 iframe - 最小化
−:隐藏学习内容,保留标题栏 - 关闭
×:关闭当前悬浮窗
刷新按钮只刷新悬浮窗里的学习页,不会刷新当前正在浏览的网页。
本项目不会绕过墨墨登录,也不会伪造账号状态。
首次使用前,请先在墨墨网页版完成一次登录:
https://www.maimemo.com/home/web_study
登录成功后,通常不需要一直保持墨墨网页版标签页打开。扩展版会通过后台请求复用浏览器 Cookie;油猴版会通过 GM_xmlhttpRequest 携带登录状态请求学习页。
如果登录过期或 Cookie 被浏览器拦截:
- 点击悬浮窗标题栏的刷新按钮
↻ - 或点击错误提示中的“重新连接”
- 仍然失败时,点击“在新标签页打开墨墨学习页”重新登录
- 登录完成后,再回到原网页点击刷新
墨墨学习页出现以下类型的确认页面时,脚本会有限次数地尝试:
- 识别“测试须知”“测试准备”“注意事项”等页面
- 自动勾选“我已阅读测试须知、”等确认框
- 自动点击“同意并开始学习”“确认开始”“开始学习”等按钮
自动处理只针对确认页面,不会在正常背词页面主动点击开始按钮。
- 普通
http://网页 - 普通
https://网页 - 墨墨学习 iframe(用于 bridge 通信)
浏览器禁止普通扩展 content script 或油猴脚本注入以下内部页面:
chrome://newtabedge://newtababout:*- 浏览器扩展管理页
- 浏览器商店页面
所以在浏览器默认新标签页中看不到悬浮球是正常现象。本项目默认不会替换浏览器新标签页。
- 确认扩展已经在扩展管理页启用
- 确认当前页面是普通 HTTP/HTTPS 页面,而不是
chrome://或edge://页面 - 扩展重新加载后刷新网页
- 检查是否同时启用了油猴版和扩展版
- 检查脚本管理器中的脚本是否处于启用状态
先打开墨墨网页版并完成登录:
https://www.maimemo.com/home/web_study
然后回到原网页,点击悬浮窗标题栏的 ↻ 刷新按钮。
依次尝试:
- 点击标题栏刷新按钮
↻ - 点击错误页面中的“重新连接”
- 在新标签页打开墨墨学习页并确认可以正常学习
- 检查浏览器是否限制第三方 Cookie
- 在扩展管理页重新加载扩展,再刷新宿主网页
这通常表示墨墨页面 DOM 或内部 iframe 结构发生变化,或者 bridge 没有成功注入。请先:
- 重新加载扩展
- 刷新宿主网页
- 点击悬浮窗刷新按钮
- 确认没有被浏览器扩展权限或隐私策略拦截
这是浏览器安全限制,不是安装失败。请在普通 HTTP/HTTPS 网页中使用。
- 动态 token 只在当前连接过程中使用
- 不把 token 写入扩展存储
- 不把 token 写入日志
- 悬浮球位置、窗口尺寸和最小化状态保存在本地浏览器存储中
- 消息通信校验来源、origin 和命令白名单
- 项目不会上传账号密码或学习数据到第三方服务器
使用本项目时,浏览器仍会按照墨墨官网的登录和 Cookie 策略发送请求。
- Manifest V3
- Content Script:创建悬浮球和学习窗口
- iframe bridge:在墨墨学习页面中执行自动确认、评分和快捷键操作
- Service Worker:携带 Cookie 获取学习页 HTML,并提取动态学习 URL
chrome.storage.local:保存本地布局设置- Popup / Options:提供快捷入口和设置说明
GM_xmlhttpRequest:跨域请求墨墨学习页GM_getValue/GM_setValue:保存悬浮窗设置window.postMessage:父页面与学习 iframe 通信- Shadow DOM:隔离悬浮窗样式,减少宿主页面 CSS 干扰
- MutationObserver:监听页面变化并触发有限自动确认
momo-float/
├── manifest.json
├── README.md
├── icons/
│ ├── icon-16.png
│ ├── icon-32.png
│ ├── icon-48.png
│ └── icon-128.png
├── scripts/
│ └── maimemo-floating-study.user.js
└── src/
├── background/
│ └── service-worker.js
├── content/
│ ├── floating.css
│ ├── floating.js
│ └── study-bridge.js
├── options/
├── popup/
└── shared/
- 修复后台获取学习页时的常量引用错误
- 改进学习 iframe bridge 注入与握手
- 增加标题栏刷新按钮
- 支持失败后直接重建学习 iframe
- 增加标题栏刷新按钮
- 刷新时重新获取登录状态和动态学习地址
- 保留原有快捷键、拖动、缩放和自动确认功能
- 修复悬浮球自由停放和边缘半隐藏吸附
- 增加登录失败、超时和 iframe 未连接提示
- 增加重新连接和新标签页后备入口
- 完善测试须知自动确认
欢迎提交:
- Issue:反馈安装、登录、连接或快捷键问题
- Pull Request:提交修复或功能改进
- 截图和浏览器版本:有助于定位 iframe、Cookie 和页面结构问题
反馈问题时请尽量提供:
- 浏览器和版本
- 使用的是扩展版还是油猴版
- 当前页面地址类型(普通网页 / 墨墨学习页)
- 悬浮窗显示的具体错误文案
- 是否能在新标签页正常打开墨墨学习页
请勿提交账号密码、Cookie、动态 token 或其他隐私数据。
本项目是个人学习辅助工具,与墨墨背单词官方无关。墨墨网页端的页面结构、登录策略、Cookie 策略和 iframe 策略可能随时变化,项目不保证长期兼容所有版本。
请遵守墨墨背单词及所在网站的服务条款,合理使用自动化功能。
本项目采用 MIT License 开源许可证。你可以自由使用、复制、修改、合并、发布和分发本项目,但需要保留原版权声明和许可证文本。