禁用卸载滚动?

“打印”路由是个不错的起点,但还不是我真正想要的。

在旧版本中,我可以通过滚动加载整个主题(或者仅加载与特定序列相关的部分),并保持其加载状态,然后使用 SingleFile 将整个主题导出为存档,显示效果与普通的论坛页面完全一致。这有点像截图,但体积更小,可以滚动、缩放,链接可以点击,图片可以保存,而且文本是以文本形式而非像素形式呈现的。我还可以先对页面做一些准备,比如展开“3 条回复”的小部件,或取消隐藏剧透内容,甚至在回复小部件中附加私人笔记,这些笔记可以作为存档的一部分查看,但永远不会真正发布到论坛上。我还可以使用 uBlock Origin 的“zapper”功能来删除那些与我想要保存的主题部分无关的帖子……将讨论精简到只保留我需要的确切评论。

然而,在一次 Discourse 更新之后,这种功能就丢失了。我现在最多只能一次加载几个帖子。如果我把浏览器缩放级别拉到最远,以便在屏幕上显示更多帖子,也许能多加载一些。

如果有一种方法可以强制它停止卸载帖子,那就太棒了。比如,一个快捷键、一个按钮,或者……随便什么方式。只需按某个键,就能暂时禁用负责卸载屏幕外帖子的 JavaScript 函数,并且仅针对当前浏览器标签页生效。

举个例子,假设有一个长达 12,000 条评论的主题,关于一个团购活动,跨度数年。在主题中间,人们聊了 100 个帖子关于猫,然后又回到了原来的话题。我可以滚动到猫咪讨论的开头,在 Discourse 中按下“停止卸载帖子”的快捷键,向下滚动,使用 uBlock 的 zapper 删除所有与猫无关的帖子,滚动到猫咪讨论的结尾,然后按下 SingleFile 的快捷键,将 DOM 保存为 .html 文件。

我直到去年还能做到这一点;不确定是从什么时候开始不行了的。也许那只是一个允许它正常工作的 bug,因为看起来卸载行为早在十年前就已经存在了。但我喜欢那个 bug,希望有时能把它带回来。

我知道这会让标签页占用更多资源。没关系。在某些使用场景中,“DOM 中加载更多内容”比最小化 RAM 使用更重要。