添加一个选项以禁用回复后自动跳转到最后一帖

大家好,

我最近花了一些时间浏览 Meta 和其他基于 Discourse 论坛上的旧主题和讨论,发现多年来许多用户反复提出了同一个担忧

发布回复或关闭编辑器后,Discourse 会自动跳转到主题的最后一个帖子。

对相当一部分人来说——包括我自己——这种行为实际上是有碍而非有益的。

为什么这会造成问题

根据许多用户的表达,常见的问题包括:

  • 当你在长帖子的中间回复时,编辑器关闭后视图会突然跳到底部,迫使你一直滚动回去才能继续阅读你之前所在的位置。

  • 如果你在跟进阅读旧消息时进行回复,这种自动跳转会打断阅读流程

  • 一些用户甚至认为这可能是一个错误,因为跳转发生得太快,让人感觉意外且不直观。

  • 许多过去的讨论表明,人们尝试过变通方法、脚本或黑客手段,但没有一个是可靠或官方支持的。

简而言之,虽然自动跳转到最新帖子对一些用户很有用,但根据不同的阅读习惯或工作流程,它对许多其他人来说是多余的

功能请求:请让此行为可选

通过回顾过去的帖子,似乎:

  • 没有内置设置可以禁用此自动跳转

  • 没有官方插件提供切换选项

  • 管理员和用户目前完全无法控制此行为

因此,我请求 Discourse 提供以下任一选项:

一个用户偏好设置,例如:

“发布或关闭编辑器后,停留在当前位置(不要跳转到最后一个帖子)。”

或者

一个全站/管理员设置,例如:

“启用/禁用回复后自动滚动到最新帖子。”

这将允许不同的社区(和单个用户)选择更适合其阅读风格的交互模式。这也符合 Discourse 的设计理念,即通常允许定制阅读流程行为。

为什么提供选项对每个人都有益

  • 喜欢自动跳转的用户可以保持现状

  • 不喜欢此功能的用户可以将其关闭

  • 论坛管理员可以设置符合其社区需求的默认值

  • 没有人需要依赖脆弱的自定义 JavaScript 或浏览器用户脚本

  • 它可以改善可访问性,并减少对某些读者可能不适的突然移动

考虑到这么多人多年来都提出了这个问题,添加一个可配置的选项可以显著改善社区中很大一部分用户的用户体验。

如果我错过了现有的设置或插件,请随时指点我——但根据我的发现,似乎目前不存在这样的选项。

感谢您的考虑,我非常感谢团队或其他插件开发者的任何见解。

3 个赞

发布内容后,您不会因为发现自己落在了帖子列表的几十个帖子之上而感到困惑,并且没有任何提示表明您已经发布了吗?如果您想评论其余的帖子,为什么不继续阅读呢?

2 个赞

感谢您的解释!让我澄清一下我的实际用例,因为当前的行为仍然给我带来了真正的问题。

想象一下这个场景:
我发起一个讨论串,然后去睡觉,第二天醒来发现有一百多条回复。其中很多都很有趣,我想在阅读整个帖子时回复其中一些

问题在于:

当我在主题的中间阅读某条回复并对其进行回复时,发送回复后,Discourse 会立即跳转到主题的最底部
但对话不是实时的——人们可能要过几个小时才会再次回复。我不需要被带到最新的帖子。我只是想按顺序继续阅读其余的回复。

我真正需要的是:

  • 一个明确的指示,表明我的回复已成功发布

  • 会丢失我当前的阅读位置

  • 这样我就可以自然地继续按顺序阅读接下来的回复

现在,在强制自动跳转后,我必须手动滚动回去并试图记住我之前的位置,这很繁琐,并且打断了阅读流程。

这就是为什么提供一个发帖后停留在当前滚动位置的选项会非常有帮助。
自动跳转对某些工作流程很有用,但在我的情况下,它只是碍事。

关于此问题,在 Will disable_jump_reply make a return? 及相关主题中有成千上万的讨论。

简而言之,您可以在发帖时按住 Shift 键以防止滚动。

2 个赞

感谢您的提示!我不知道有 Shift + 回复 这个行为——这在某些情况下确实有帮助。

话虽如此,我仍然觉得这真的可以从一个适当的设置或用户偏好中受益。每次都使用修饰键不太容易被发现,而且很容易忘记,特别是对于可能甚至不知道存在此类快捷键的非技术用户来说。

我非常欣赏 Discourse 的一点是它已经提供了高度的自由——用户可以自定义他们阅读、导航和交互的许多方面。在我看来,正是这种自由使 Discourse 成为一个很棒的平台。对于这个特定的行为,如果用户可以简单地选择他们的默认偏好,那就太好了:

  • 回复后自动跳转到最后一篇帖子,或者

  • 停留在当前位置并继续阅读

有一个明确的默认设置加上调整它的能力,将使该行为更直观、更易于访问。例如,在我自己的浏览习惯中,我倾向于在新标签页中从主页打开大多数主题,因为现代计算机内存充足,关闭标签页通常比来回导航更快、更方便。这只是说明不同用户重视不同工作流程的一个例子。

所以我的一般理念是:用户选择越多越好。
如果一个功能有多种合理的行为,让用户决定——而不是强迫每个人走一条路——通常会为所有人带来更好的体验。这也意味着像我这样的用户就不需要创建小的脚本或插件来恢复对我们来说很自然的工作流程。

再次感谢您有帮助的回复,我希望将来仍能将此视为一个潜在的可选设置来考虑。

2 个赞

请阅读 Will disable_jump_reply make a return?

2 个赞

:heart: 感谢您的指点——我现在已经阅读了整个“disable_jump_reply 是否会回归?”的主题。

我理解移除旧的 disable_jump_reply 偏好设置背后的原因:当时它已损坏,很少有人使用,而且 Discourse 通常会避免积累大量的全局用户偏好设置。我还了解您在那里描述的设计理念——使用自动跳转作为鼓励人们在回复前阅读完整主题的方式,而更“专家级”的工作流程则隐藏在修饰键或高级选项等后面。

Shift + Reply 快捷键在某些情况下确实有帮助,感谢您的提及。但对我的问题是:

  • 如果没有阅读过那个特定的 Meta 主题或没有别人告知,这个功能完全无法被发现,
  • 每次都需要记住一个特殊的按键会增加心智负担,
  • 当您在多个 Discourse 论坛上追看长篇主题时,被猛地拉到离您阅读位置几百个帖子远的地方,对于一个简单的回复来说,仍然感觉像是一种相当沉重的“惩罚”。

我个人喜欢 Discourse 的一点正是它的灵活性:作为管理员或用户,您可以调整很多细节以适应自己的阅读和导航习惯。从这个角度来看,这似乎是一个只需要少量额外配置就能大有裨益的领域,而不会让界面变成一堆选项。

例如,以下任何一个都会有很大的改进:

  • 在用户界面中提供一个可见的“不跳转回复”选项(即使它被认为是高级/专家操作),
  • 或者一个隐藏在“高级”部分下的用户级别/站点级别切换,这样真正关心这种行为的人就可以一次性选择退出,而不是永远依赖一个隐藏的快捷键。

我完全理解对拥有太多偏好设置的担忧,我并不是要求恢复每一个晦涩的设置。我只是想分享一个花大量时间在阅读旧帖子时进行回复的人的观点:对于这种特定的行为,缺乏一个清晰、可发现的选择所付出的代价,比许多其他偏好设置要高。

无论如何,再次感谢您的解释和 Shift 提示——了解背景信息非常有帮助,尽管我仍然希望将来这可能会被重新考虑为某种可选的或“专家级”的设置。

2 个赞

再次感谢——有趣的是,当我问了几个基于 Discourse 的论坛上的相同问题时,几位用户也不知道按住 Shift 键可以阻止跳转。所以这显然不是一个很容易发现的行为。

从积极的一面来看,现在我知道了 Shift 机制,明天编写一个小插件或主题组件应该相当简单。它实际上给了我一个更清晰的实现方法,因为我将不必依赖繁重的 DOM 突变观察器来抵消自动滚动——我可以挂接到相同的逻辑中。

无论如何,感谢您提供的信息。即使这仍然是一个“专家级”行为,我也很高兴我终于足够了解底层机制,可以对其进行适当的扩展。

3 个赞

我的朋友脚本大师 @Pipecraft 已经完成了这个插件的开发。如果你也想使用它,请访问 userscripts/discourse-prevent-jump-on-reply/discourse-prevent-jump-on-reply.user.js at main · utags/userscripts · GitHub

终于不用在回复帖子时一直按住 shift 键了。谢谢大家!:heart:

4 个赞

那……是一个通过 Tampermonkey 运行的 JS 脚本。我不太会称之为“插件” :wink:

肯定可以复制 SHIFT 键的逻辑并根据用户偏好进行覆盖吧?不过这看起来很复杂。

唉,如果它能用就行。我很惊讶这可以用 JS 来实现。我看到它使用了 preventDefault()。不过这确实是个有趣的解决方案!

3 个赞

我们也期待您的解决方案。谢谢 :heart:

这个 Tampermonkey 脚本可以转换为论坛组件吗?

1 个赞

如何在移动设备上实现这一点?

理论上,我相信可以,因为 Tampermonkey 脚本与主题组件(Theme Components)相似,它们都是客户端修改。

虽然我还没有足够的经验或知识。 我很好奇是否可以将 Tanoermibkey 脚本输入到人工智能(AI)中以创建 TC(主题组件)。

另外,我认为当前的 UI 是最好的,我们只需要勾选“阻止跳转到最新帖子”中的一个复选框即可保存此状态。另外,我认为当前的 UI 是最好的,我们只需要勾选“阻止跳转到最新帖子”中的一个复选框即可保存此状态

image

image

比起让用户更难跳转到回复,我更倾向于让用户更容易跳回到他们之前的位置,这在其他场景下也很有用。

关于这个想法的一些先前讨论:

1 个赞

所以是像阅读主题到一半,稍后再回来时出现的“返回”指示器那样的东西吗?

是的,差不多是那样。

我确实认为这对某些人来说可能会很嘈杂,所以设计的细节可能需要一些迭代。也许它需要可以关闭,或者在你离开该主题后自动关闭,或者“从这里标记为未读”……但大概是那样,是的。

2 个赞

感谢您分享您的想法,我仍然坚持我孩子气的观点。我认为我们能为用户提供的选项越多越好,而不是硬编码一个特定的功能。记住的主题位置应该是“第一未读”帖子“最后阅读”帖子,并且用户应该能够选择他们喜欢的。

1 个赞