我写了一个小报童的列表油猴插件

ibucoin 2024年6月18日

前段时间,在朋友的推荐下,我订阅了几个“小报童”的专栏,开始大量阅读相关文章。然而,在使用PC端进行阅读的过程中,我发现了一个体验上的问题:小报童没有跳转目录。

一般的博客阅读习惯是页面上会有一个大纲列表,阅读结束后,可以方便地跳转到下一篇文章,减少阅读流的中断。然而,在阅读小报童时,我只能退回上一页,选择下一篇文章的链接,再进行阅读。这种体验对我来说非常不便,于是我萌生了开发一个油猴插件的想法。

实现最小化的MVP 在开发这个油猴插件的过程中,我先撇开不熟悉油猴开发所浪费的时间,专注于:我们需要什么样的功能来实现我们的需求? 我整理了一下在开发过程中需要解决的问题以及解决方法:

问题:如何在文章页中显示小报童的目录,以便随时跳转?

回答: 类似于下图所示的目录,代表我需要获取小报童的文章目录。然而,小报童的接口经过了加密,破解并模拟接口加密比较麻烦,所以我暂时放弃了这个方案。重点在于:从哪里获取目录页?

问题:从哪里获取目录页?

回答: 从专栏列表中。我们可以从小报童的专栏列表中获取目录页,但由于小报童使用Vue框架,每页请求20个数据,我们无法很好地获取全部目录页。于是,我采用了一个较为“土”的方法来达成目的:重写XMLHttpRequest来监听接口获取内容,并将目录页内容缓存到本地。具体操作是进入专栏列表,手动下滑刷新,获取并缓存所有目录页。

我没有做增量文章的缓存机制,而是简单粗暴地设置了一个重置缓存的按钮。当缓存文章出现问题或不是最新时,只需重置缓存,再次获取目录页即可。一次缓存,随时可用。

问题:遇到目录页无法显示的情况怎么办?

回答: 由于使用Vue框架,在尝试监听Vue的路由跳转未成功后,我转而用setTimeout解决因Vue未挂载而无法插入DOM的问题。

以上就是开发这个小报童插件过程中遇到并解决的问题。在整个过程中,我设定了一个明确的目标,并尽可能用最小的代价实现目标,避免为了完美某个功能点而花费过多时间。完成这个插件后,我在阅读小报童时的体验也得到了显著提升。

小报童油猴插件链接 可以去安装试用一下