Discourse Topic Quick Switcher

Created at 3 days ago
Updated at a day ago
Enhance Discourse forums with instant topic switching, current topic highlighting, and quick navigation to previous/next topics
Total Installs
65
Today's New
+10
User Rating
- / 5.0 (0)
Current Version
0.5.0

Discourse 话题快捷切换器

一款强大的用户脚本,为 Discourse 论坛带来无缝话题导航、当前话题高亮显示和上一个/下一个话题的快速导航功能。让您以更快的速度和更高的效率浏览您喜爱的论坛。

screencapture

功能特点

  • 话题列表缓存:当您访问列表页面时自动缓存话题列表
  • 快速访问:通过以下方式从任何话题页面访问缓存的列表:
    • 右下角的悬浮按钮
    • 可自定义的键盘快捷键(默认:Alt+Q 显示话题列表)
  • 增强导航:使用以下方式在话题间导航:
    • 可自定义的键盘快捷键(默认:Alt+W 下一个话题,Alt+E 上一个话题)
    • 提供上一个话题和下一个话题的快速导航按钮
    • 自动跳过隐藏的话题进行导航
  • 用户友好界面
    • 显示缓存时间和来源信息
    • 从弹出面板直接导航到话题
    • 通过 ESC 键、关闭按钮或点击面板外部关闭
    • 当前话题高亮显示,方便识别
    • 自动滚动到列表中的当前话题
    • 设置面板,自定义您的体验,包括语言偏好、导航按钮显示选项和快捷键
  • 自适应主题
    • 根据系统和网站偏好自动调整明/暗模式
  • 缓存管理
    • 1小时缓存过期时间,带有视觉指示器
    • 源链接可返回原始列表页面

实现原理

此脚本完全在客户端运行,注重效率和最小资源使用:

  1. 客户端缓存:当您访问话题列表页面时,脚本捕获话题列表的HTML内容并将其存储在浏览器的本地存储中。

  2. 零额外服务器请求:脚本仅使用浏览器已加载的内容工作,不会对Discourse服务器造成任何额外负担。

  3. SPA导航:脚本利用Discourse的单页应用架构在话题之间导航,无需完整页面重载,使导航几乎瞬时完成。

  4. DOM操作:通过精心的DOM操作显示缓存的话题列表,创建与论坛当前主题匹配的无缝覆盖层。

  5. 基于事件的交互:所有用户交互(键盘快捷键、按钮点击)通过高效的事件监听器处理。

设计理念优先考虑性能和服务器友好性 - 脚本提供便捷导航,同时不会产生任何超出Discourse正常需求的额外服务器请求。

局限性

由于脚本使用缓存机制,存在以下局限性:

  1. 非实时数据:缓存的话题列表中显示的回复数量和浏览次数不是实时数据,而是缓存时的数据。

  2. 缓存时效性:话题列表仅在您访问列表页面时更新,如果长时间未访问列表页面,缓存的数据可能与实际情况有较大差异。

  3. 新话题不会自动显示:在您缓存列表后发布的新话题不会出现在快速切换器中,直到您再次访问列表页面刷新缓存。

  4. 有限的话题数量:快速切换器只能显示您最后访问的列表页面中包含的话题,通常是一页的内容。

这些局限性是为了保持脚本的轻量级特性和零额外服务器请求的优势而做出的设计选择。

安装

  1. 安装用户脚本管理器,如 TampermonkeyViolentmonkey
  2. 点击此处安装此脚本
  3. 访问任何 Discourse 论坛,享受增强的导航体验!

使用方法

  1. 缓存话题列表

    • 访问任何 Discourse 论坛话题列表页面(最新、新建、分类等)
    • 脚本会自动缓存当前列表
  2. 查看缓存的列表

    • 在查看话题时,可以:
      • 点击右下角的悬浮按钮
      • 使用配置的快捷键(默认:Alt+Q)
    • 将出现一个弹出窗口,显示缓存的话题列表
  3. 在话题间导航

    • 点击弹出窗口中的任何话题以导航到该话题
    • 使用键盘快捷键进行快速导航:
      • 下一个话题:配置的快捷键(默认:Alt+W)
      • 上一个话题:配置的快捷键(默认:Alt+E)
    • 使用弹出窗口中的导航按钮
    • 选择后弹出窗口将自动关闭
  4. 自定义快捷键

    • 从弹出窗口或悬浮按钮访问设置对话框
    • 为每个操作配置自定义键盘快捷键
    • 支持的格式:Alt+KeyQ、Ctrl+KeyK、Shift+KeyG 等
  5. 关闭弹出窗口

    • 点击 × 按钮
    • 按下 ESC 键
    • 点击弹出窗口外部

兼容性

此脚本适用于所有 Discourse 论坛,并已在以下浏览器上测试:

  • Chrome
  • Firefox
  • Safari

发布记录

v0.5.x

  • 添加可自定义的快捷键设置,增强导航控制功能
  • 在设置对话框中实现快捷键配置,包含格式验证和重复检查
  • 添加对显示话题列表、下一个话题和上一个话题操作的自定义键盘快捷键支持
  • 增强快捷键解析器,支持修饰键(Ctrl、Alt、Shift、Meta)和各种按键代码
  • 改进设置界面,添加专门的快捷键配置区域
  • 为快捷键相关文本添加中英文国际化支持
  • 在允许完全自定义的同时保持与现有默认快捷键的向后兼容性

v0.4.x

  • 添加全面的移动设备优化
  • 重构 GM API 调用为现代异步格式(使用 GM.* 替代 GM_*
  • 改进深色模式设置对话框样式和对比度
  • 优化站点特定键生成以提升性能(在脚本加载时预初始化)
  • 设置改为按网站生效(每个网站独立维护自己的设置)
  • 在设置中添加深色模式切换功能,提供三种选择:自动(默认)、浅色和深色
  • 增强保存按钮样式,采用突出的主要按钮设计和流畅动画效果

v0.3.x

  • 添加设置对话框,用于自定义用户体验
  • 添加语言选择选项
  • 添加导航按钮显示切换功能

v0.2.x

  • 添加上一个话题和下一个话题的快速导航按钮
  • 添加自动跳过隐藏话题的导航功能

v0.1.1

  • 添加国际化支持,支持英文和中文翻译

v0.1.0

  • 初始发布
  • 基本话题列表缓存功能
  • 快速访问的悬浮按钮
  • 键盘快捷键支持
  • 缓存过期指示器
  • 添加当前话题高亮显示功能
  • 添加自动滚动到当前话题的功能
  • 添加点击列表外部关闭列表的功能
  • 改进深色模式支持,增加自动主题适配

更多实用脚本

以下是一些其他有用的脚本,可以增强您的浏览体验:

🏷️ UTags - 为链接添加用户标签

  • 链接Greasy Fork
  • 功能:为用户、帖子、视频和其他链接添加自定义标签和备注
  • 亮点:支持特殊标签过滤(如垃圾、屏蔽、标题党等),数据导出/导入,自动标记已查看帖子
  • 支持网站:V2EX、X(Twitter)、Reddit、GitHub、哔哩哔哩、知乎、Linux.do、Youtube 等 50+ 网站
  • 描述:超级实用的标签管理工具,可为论坛用户或帖子添加标签,轻松识别或屏蔽低质量内容

🔗 链接助手

  • 链接Greasy Fork
  • 功能:在新标签页中打开第三方网站链接,将文本链接解析为超链接
  • 亮点:支持自定义规则,解析 Markdown 和 BBCode 格式,将图片链接转换为图片标签
  • 支持网站:适用于所有网站,包括谷歌、YouTube、GitHub、V2EX 等
  • 描述:增强链接浏览体验,自动处理各种链接格式,使网页浏览更加便捷

🔍 查找适用于当前网站的脚本

  • 链接Greasy Fork
  • 功能:快速查找当前网站的用户脚本
  • 亮点:支持多个流行的脚本仓库,轻松发现有用的脚本
  • 支持网站:适用于任何网站,查找相关用户脚本
  • 描述:一个方便的工具,用于发现和安装专为您访问的网站设计的用户脚本

许可证

MIT License - 详见 LICENSE 文件

贡献

欢迎贡献!请随时提交拉取请求。

相关链接