浏览器成就系统

Created 12 days ago
Updated 12 days ago
监控上网行为解锁成就,并在配置的网站显示成就浮动窗。⚙️ 支持通过齿轮按钮自定义浮动窗显示网址。🐛 修复悬浮窗点击展开问题。
Statistics
Total Installs
30
Last 24h
+1
User Rating
-

浏览器成就系统

将日常上网变成一场游戏 —— 后台自动记录你的浏览行为,达成条件即解锁成就。


功能特性

  • 后台自动监控:持续记录上网行为数据(访问网站、标签页数量、浏览时间、夜间次数等)
  • 多样化成就:内置 10+ 项成就,覆盖浏览、社交、视频、书签等维度
  • 实时通知:达成新成就时弹出桌面通知
  • 可配置浮动窗:在指定网站右下角显示成就列表,用户可自定义网址
  • 齿轮配置面板:通过脚本猫后台的齿轮按钮修改浮动窗显示网址
  • 数据持久化:所有进度存储在本地,重启浏览器不丢失
  • 悬浮球模式:浮动窗可缩小为悬浮球,支持拖拽和单击展开

安装与使用

前置条件

  • 已安装 ScriptCat(脚本猫) 浏览器扩展
    • Chrome 应用商店搜索 "ScriptCat" 安装
    • 或访问 ScriptCat 官网 获取

安装步骤

  1. 打开 ScriptCat 扩展管理面板
  2. 点击"新建脚本"或"导入脚本"
  3. 浏览器成就系统.user.js 的完整内容粘贴进去
  4. 保存并启用脚本

首次使用

  1. 安装后脚本立即在后台运行,自动记录浏览数据
  2. 首次运行会注入一批模拟测试数据,方便你查看效果
  3. 打开 ScriptCat 管理面板,找到本脚本,点击右侧的 齿轮按钮 配置浮动窗显示网址
  4. 默认网址为 https://347735.xyz,可改为任意你想显示浮动窗的网站
  5. 修改配置后需刷新目标页面才能生效
  6. 访问配置的网址,右下角会出现成就浮动窗

配置说明

脚本猫管理面板中,点击本脚本右侧的 齿轮按钮 打开配置面板。

配置项 说明 默认值
浮动窗显示网址 输入完整网址(含协议),只有在该网站才会显示成就浮动窗 https://347735.xyz

注意事项:

  • 网址必须包含协议(http://https://
  • 匹配方式为前缀匹配,配置 https://347735.xyz 可匹配 https://347735.xyz/https://347735.xyz/page
  • 修改后需 刷新目标页面 才能生效

成就列表

成就名称 图标 解锁条件
初次启程 🚀 脚本首次运行
夜猫子 🦉 凌晨 0-6 点间浏览累计 10 次
信息猎人 🔍 访问 50 个不同网站
冲浪达人 🏄 访问 500 个不同网站
Tab 狂魔 🗂️ 单次打开 20 个以上标签页
效率大师 单次打开少于 3 个标签页
社交达人 🦋 社交媒体累计停留 2 小时
视频迷 🎬 视频网站观看 20 个视频
书签收藏家 添加 50 个书签
历史学家 📜 浏览历史超过 1000 条

浮动窗界面说明

位置与外观

  • 浮动窗固定在页面 右下角
  • 暗色蓝灰主题,带微噪点纹理背景
  • 宽度 370px,最大高度 500px

交互操作

操作 效果
拖拽标题栏 移动浮动窗位置
点击"−"按钮 最小化为悬浮球
点击"×"按钮 关闭浮动窗(10 秒后自动恢复)
点击"↻"按钮 刷新成就列表
点击"模拟访问" 注入一条模拟访问数据(测试用)
点击"模拟标签页" 注入一条模拟标签页数据(测试用)

悬浮球模式

  • 最小化后变为 48px 圆形悬浮球
  • 拖拽悬浮球可移动位置,不触发展开
  • 单击悬浮球(位移小于 5px)展开为完整浮动窗
  • 位置和最小化状态自动保存,刷新页面后恢复

状态标识

  • 已解锁成就:绿色边框,显示解锁时间
  • 未解锁成就:灰色边框,显示当前进度(如"已访问 12 / 50")

数据存储说明

所有数据通过 GM_setValue 存储在本地,不会上传到任何服务器。

存储键名 类型 说明
browser_achievement_stats Object 行为统计数据(访问数、标签页数、夜间次数等)
browser_achievement_unlocked Array 已解锁的成就 ID 列表
browser_achievement_unlock_times Object 各成就的解锁时间戳
browser_achievement_first_run Boolean 是否已完成首次运行初始化
browser_achievement_last_check Number 上次定时检查的时间戳
browser_achievement_unique_sites Array 访问过的唯一站点 hostname 列表
browser_achievement_panel_state Object 浮动窗状态(最小化状态 + 位置坐标)

stats 对象字段:

字段 说明
totalWebsitesVisited 累计访问网页次数
maxTabsOpened 单次最大标签页数
minTabsOpened 单次最小标签页数
nightBrowsingCount 夜间浏览次数(0-6 点)
socialMediaTime 社交媒体停留秒数
videoWatchedCount 视频观看次数
totalBookmarks 书签总数
historyEntriesCount 历史记录条数

常见问题(FAQ)

Q1:修改了浮动窗网址为什么没生效?

配置修改后需要 刷新目标页面。脚本是每次页面加载时读取配置,修改配置不会立即对已打开的页面生效。关闭目标页面重新打开,或按 F5 刷新即可。

Q2:浮动窗不显示怎么办?

按以下顺序排查:

  1. 确认脚本已在 ScriptCat 中 启用
  2. 确认当前页面 URL 与齿轮面板中配置的网址 前缀匹配
  3. 尝试 刷新页面
  4. 检查浏览器是否 拦截了通知权限(部分浏览器需要允许通知)
  5. 尝试点击 ScriptCat 菜单中的"重置所有数据",然后刷新页面

Q3:如何重置数据?

点击 ScriptCat 工具栏图标,在脚本菜单中点击 "重置所有数据"。这会清空所有成就进度和统计数据,刷新页面后重新开始。

Q4:成就通知没弹出?

可能的原因:

  • 浏览器 关闭了通知权限 → 进入浏览器设置,允许该网站的通知
  • 系统 关闭了通知 → 检查操作系统的通知设置
  • 成就 已经解锁过,不会重复通知
  • 页面刚加载,成就检测需要等定时任务触发(最多 10 分钟),或手动点击浮动窗中的"模拟访问"按钮触发检测

Q5:悬浮球点了没反应?

v2.1.0 已修复此问题。脚本通过 5px 位移阈值 区分点击和拖拽:

  • 鼠标按下后移动距离 小于 5px → 视为点击,展开浮动窗
  • 移动距离 大于等于 5px → 视为拖拽,仅移动位置

如果仍然没反应,请确认脚本版本为 v2.1.0 或更高。旧版本存在点击与拖拽事件冲突的 bug。


更新日志

v2.1.0

  • 修复:悬浮球点击展开问题(点击/拖拽 5px 阈值分离)
  • 新增:浮动窗状态持久化(最小化状态 + 位置坐标存入 GM 存储,刷新恢复)
  • 优化:所有按钮点击事件加 stopPropagation 防止误触发拖拽
  • 优化:拖拽手感连续,位移超过阈值才标记为拖拽

v1.0.0

  • 初始版本
  • 10 项成就检测(浏览、社交、视频、书签等)
  • 后台定时任务(每 10 分钟检查成就)
  • 暗色主题浮动窗(可拖拽、可最小化、可关闭)
  • 桌面通知(成就解锁弹窗)
  • 菜单命令(查看成就面板、注入测试数据、重置数据)
  • UserConfig 齿轮配置面板(自定义浮动窗显示网址)

免责声明

  • 本项目 仅供学习和娱乐用途
  • 所有数据存储在 本地浏览器中,不会上传到任何服务器
  • 用户 自愿安装和使用 本脚本
  • 开发者 不对 因使用本脚本造成的任何直接或间接损失承担责任
  • 成就检测基于本地浏览数据,仅作娱乐参考,不代表真实浏览行为的完整记录

贡献与反馈

  • 问题反馈:在使用中遇到 bug 或有功能建议,欢迎提交 Issue
  • 代码贡献:欢迎提交 Pull Request,请确保代码风格一致、注释完整
  • 成就创意:如果你有新的成就点子,欢迎在 Issue 中提出

许可证

本项目采用 MIT License 开源协议。

你可以自由复制、修改、分发本代码,但请保留原始许可证声明。

Script Details
Applicable Sites
License
Not declared
No license declared — reuse with caution
Permissions & access
Cross-origin access
*
Capabilities
StorageMenu commandNotificationsOpen tab