Discourse 话题快捷切换器

增强 Discourse 论坛体验,提供即时话题切换、当前话题高亮和智能主题检测功能

当前为 2025-09-29 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
Pipecraft
评分
0 0 0
版本
0.2.0
创建于
2025-09-28
更新于
2025-09-29
大小
47.1 KB
许可证
MIT
适用于

Discourse 话题快捷切换器

一款强大的用户脚本,为 Discourse 论坛带来无缝话题导航、当前话题智能高亮和自适应主题切换功能。让您以前所未有的速度和效率浏览您喜爱的论坛。

功能特点

  • 话题列表缓存:当您访问列表页面时自动缓存话题列表
  • 快速访问:通过以下方式从任何话题页面访问缓存的列表:
    • 右下角的悬浮按钮
    • 键盘快捷键(反引号键 `
  • 用户友好界面
    • 显示缓存时间和来源信息
    • 从弹出面板直接导航到话题
    • 通过 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. 查看缓存的列表

    • 在查看话题时,可以:
      • 点击右下角的悬浮按钮
      • 按下反引号键(`
    • 将出现一个弹出窗口,显示缓存的话题列表
  3. 在话题间导航

    • 点击弹出窗口中的任何话题以导航到该话题
    • 选择后弹出窗口将自动关闭
  4. 关闭弹出窗口

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

配置

您可以在脚本顶部修改以下设置:

const CONFIG = {
  // 键盘快捷键(默认为反引号键)
  HOTKEY: '`',
  // 缓存键名
  CACHE_KEY: 'discourse_topic_list_cache',
  // 缓存过期时间(毫秒)- 1小时
  CACHE_EXPIRY: 60 * 60 * 1000,
  // 是否在话题页显示悬浮按钮
  SHOW_FLOATING_BUTTON: true,
  // 路由检查间隔(毫秒)
  ROUTE_CHECK_INTERVAL: 500,
  // 是否自动跟随系统深色模式
  AUTO_DARK_MODE: true,
}

兼容性

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

  • Chrome
  • Firefox
  • Safari

发布记录

v0.2.0

  • 添加上一个话题和下一个话题的快速导航按钮
  • 智能跳过隐藏的话题进行导航

v0.1.1

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

v0.1.0

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

许可证

MIT License - 详见 LICENSE 文件

贡献

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