Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

墨墨背单词悬浮窗

在任意普通网页中打开墨墨背单词学习窗口。

本项目同时提供两种安装方式:

  • 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 文件即可安装

同一个网页中建议只启用其中一种,避免同时出现两个悬浮球。


🚀 方式一:安装浏览器扩展版

1. 下载项目

可以使用 Git 克隆:

git clone git@github.com:lyston11/momo-float.git

也可以在 GitHub 项目页点击 Code → Download ZIP,下载后解压。

2. 加载未打包扩展

Chrome

  1. 打开 chrome://extensions/
  2. 开启右上角的“开发者模式”
  3. 点击“加载已解压的扩展程序”
  4. 选择项目根目录 momo-float/

Edge

  1. 打开 edge://extensions/
  2. 开启“开发人员模式”
  3. 点击“加载解压缩的扩展”
  4. 选择项目根目录 momo-float/

3. 开始使用

  1. 打开任意普通 http://https:// 网页
  2. 如果页面已经打开,请刷新一次网页
  3. 页面右下角会出现墨墨猫头鹰悬浮球
  4. 点击悬浮球打开学习窗口
  5. 第一次使用时,按提示登录墨墨网页版

扩展代码目录:

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

安装步骤

  1. 安装脚本管理器:
  2. 打开上面的 .user.js 文件
  3. 脚本管理器出现安装页面后,点击“安装”
  4. 打开任意普通 http://https:// 网页
  5. 如果悬浮球没有出现,刷新当前网页

脚本需要的跨域权限由元数据声明,包括:

maimemo.com
www.maimemo.com
tc-apis.maimemo.com

脚本版本当前为 0.3.2。修改脚本文件后,在脚本管理器中重新保存或重新安装即可。


⌨️ 快捷键

在学习窗口打开且焦点不在输入框时:

快捷键 功能
Alt/Option + M 显示或隐藏悬浮窗
Space / Enter 显示答案或继续
1 认识
2 模糊
3 忘记
+ / = 放大窗口
- 缩小窗口
Esc 第一次最小化,再按一次关闭

标题栏按钮

  • 新标签页:在新的浏览器标签页打开墨墨学习页
  • 刷新 :重新获取登录状态、动态学习地址和 token,并重建学习 iframe
  • 最小化 :隐藏学习内容,保留标题栏
  • 关闭 ×:关闭当前悬浮窗

刷新按钮只刷新悬浮窗里的学习页,不会刷新当前正在浏览的网页。

🔐 登录与 Cookie

本项目不会绕过墨墨登录,也不会伪造账号状态。

首次使用前,请先在墨墨网页版完成一次登录:

https://www.maimemo.com/home/web_study

登录成功后,通常不需要一直保持墨墨网页版标签页打开。扩展版会通过后台请求复用浏览器 Cookie;油猴版会通过 GM_xmlhttpRequest 携带登录状态请求学习页。

如果登录过期或 Cookie 被浏览器拦截:

  1. 点击悬浮窗标题栏的刷新按钮
  2. 或点击错误提示中的“重新连接”
  3. 仍然失败时,点击“在新标签页打开墨墨学习页”重新登录
  4. 登录完成后,再回到原网页点击刷新

✅ 自动进入学习

墨墨学习页出现以下类型的确认页面时,脚本会有限次数地尝试:

  • 识别“测试须知”“测试准备”“注意事项”等页面
  • 自动勾选“我已阅读测试须知、”等确认框
  • 自动点击“同意并开始学习”“确认开始”“开始学习”等按钮

自动处理只针对确认页面,不会在正常背词页面主动点击开始按钮。

🌐 页面和浏览器限制

可以注入的页面

  • 普通 http:// 网页
  • 普通 https:// 网页
  • 墨墨学习 iframe(用于 bridge 通信)

无法注入的页面

浏览器禁止普通扩展 content script 或油猴脚本注入以下内部页面:

  • chrome://newtab
  • edge://newtab
  • about:*
  • 浏览器扩展管理页
  • 浏览器商店页面

所以在浏览器默认新标签页中看不到悬浮球是正常现象。本项目默认不会替换浏览器新标签页。

🛠️ 故障排查

1. 看不到悬浮球

  • 确认扩展已经在扩展管理页启用
  • 确认当前页面是普通 HTTP/HTTPS 页面,而不是 chrome://edge:// 页面
  • 扩展重新加载后刷新网页
  • 检查是否同时启用了油猴版和扩展版
  • 检查脚本管理器中的脚本是否处于启用状态

2. 显示“需要登录墨墨网页版”

先打开墨墨网页版并完成登录:

https://www.maimemo.com/home/web_study

然后回到原网页,点击悬浮窗标题栏的 刷新按钮。

3. 显示“学习页未连接”

依次尝试:

  1. 点击标题栏刷新按钮
  2. 点击错误页面中的“重新连接”
  3. 在新标签页打开墨墨学习页并确认可以正常学习
  4. 检查浏览器是否限制第三方 Cookie
  5. 在扩展管理页重新加载扩展,再刷新宿主网页

4. 学习页面能显示,但按钮或快捷键没有反应

这通常表示墨墨页面 DOM 或内部 iframe 结构发生变化,或者 bridge 没有成功注入。请先:

  • 重新加载扩展
  • 刷新宿主网页
  • 点击悬浮窗刷新按钮
  • 确认没有被浏览器扩展权限或隐私策略拦截

5. 新标签页没有悬浮球

这是浏览器安全限制,不是安装失败。请在普通 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/

📝 更新日志

0.1.1(扩展版)

  • 修复后台获取学习页时的常量引用错误
  • 改进学习 iframe bridge 注入与握手
  • 增加标题栏刷新按钮
  • 支持失败后直接重建学习 iframe

0.3.2(油猴版)

  • 增加标题栏刷新按钮
  • 刷新时重新获取登录状态和动态学习地址
  • 保留原有快捷键、拖动、缩放和自动确认功能

0.3.1(油猴版)

  • 修复悬浮球自由停放和边缘半隐藏吸附
  • 增加登录失败、超时和 iframe 未连接提示
  • 增加重新连接和新标签页后备入口
  • 完善测试须知自动确认

🤝 反馈与贡献

欢迎提交:

  • Issue:反馈安装、登录、连接或快捷键问题
  • Pull Request:提交修复或功能改进
  • 截图和浏览器版本:有助于定位 iframe、Cookie 和页面结构问题

反馈问题时请尽量提供:

  • 浏览器和版本
  • 使用的是扩展版还是油猴版
  • 当前页面地址类型(普通网页 / 墨墨学习页)
  • 悬浮窗显示的具体错误文案
  • 是否能在新标签页正常打开墨墨学习页

请勿提交账号密码、Cookie、动态 token 或其他隐私数据。

⚠️ 免责声明

本项目是个人学习辅助工具,与墨墨背单词官方无关。墨墨网页端的页面结构、登录策略、Cookie 策略和 iframe 策略可能随时变化,项目不保证长期兼容所有版本。

请遵守墨墨背单词及所在网站的服务条款,合理使用自动化功能。

📄 许可证

本项目采用 MIT License 开源许可证。你可以自由使用、复制、修改、合并、发布和分发本项目,但需要保留原版权声明和许可证文本。

社区支持

学 AI,上 L 站

LINUX DO 社区支持

本项目在 LINUX DO 社区发布与交流,感谢佬友们的支持与反馈。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages