古诗文网优化 - 油猴脚本,屏蔽登录弹窗及自动展开译文

脚本主要解决古诗文网登录弹窗的烦人体验(屏蔽)以及自动展开译文。

本脚本是 Poto 第一个脚本,也是 Poto 学习编程的见证。在实践中学习,在项目中通过解决切实的问题而有目的地学习是 Poto 目前的指导路线,单纯地学习编程太枯燥,看不少文档和文章教程,看完不知何解。光看不练,知识不是你的,你也应用不了。

之前,我一直是光说不做,嚷嚷着我要学习编程,但始终是雷声大、雨点小。也因此,有许多好心人指出我的这个问题,他们善意地指出我的问题,提醒我注意。我也知道,这样下去到底不是办法。

事在人为。不去做,就永远不可能做了。

namespace 乱写可不太好

自动生成的模板,不熟所以沿用默认的。

一般 namespace 写什么比较好?

和我差不多,我就是习惯自给自足,因此自学了不少编程语言(虽然都不精通),我学习一个新的编程语言从来不会按部就班的去看什么书、什么视频之类的,根本看不进去。。。

直接简单粗暴的去看一遍基础教程(语法什么的),然后就直接边查边写了,以个人需求为推动力~

虽然有很多缺陷(基础差,经常需要查资料),但是可以几小时速成(完成作为推动力的个人需求),反正我学的很多编程语言在完成需求后,就因为失去了推动力而很少再碰了。。。

因为你在 QQ 群中的提问涉及到的问题比较多,所以我到这边回复来吧。

建议先学习基础

今天我一直在和你讲这个问题,但是你一直在回避,那我就在这里展开讲一讲吧。

这个学习方法是没有问题的,我也经常这样去学习。但我并不是说你今天这样的做法就是正确的。

  • 现在的前端技术比较复杂,靠这种方法很容易因为基础知识不牢靠而难以前进
  • UserScript 是在别人的页面上动刀,前提就是你能够理解对方所使用的技术,或者你的基础知识足够扎实。否则这种刀尖上跳舞的事情基本上是做不好的。
  • 你所选择的那个页面既然都会使用动态 ID 了,就意味着他对于这些脚本的修改是做了一定预防措施的。所以你在自己能力不足的情况下,又选择了一个比较困难的问题。

这些综合下来会导致什么呢?看起来你只是提了一个小问题,但是别人解答这个小问题之后,你会由此再产生许多的小问题……虽然是一个很简单的脚本,但是需要别人给你解答许多的小问题,真还不如对方直接写一下这个脚本来的简单。

即便把这些小问题都给你解答了,你真的学会了什么吗?没有相应的基础知识,对于许多答案你都是没有办法理解的。

没有办法理解就先记下来,以后用的时候先照猫画虎,想起来很简单,但这些只是其中非常细节的小问题,你在未来还会遇到无数这样的小问题……那么你需要的可能是一本字典。

我贴出了我教程的链接,你认为其中某些问题,我只是三言两语的带过。确实是如此,可如果所有这样细节的问题我全都展开,你想一下这篇文章会有多少内容。所以这三言两语中,我尽可能把问题的关键点给点出来,这样有需要的朋友就可以根据这个线索去进行深入的查询。

有人指出路了,那么下一步就是自己的探索。如果没有探索能力,那还是付出一定的成本,雇个导游吧。毕竟不可能每一处都有人愿意带着你去亦步亦趋的走到目的地。

如何选择某一个元素

作为前端的基础知识,你总应该知道选择器这个词吧。那么如何选择一个元素,当然是如何写出对应的选择器。自己写不出合适的选择器,为什么不去看一下选择器的文档呢?这和上面朋友所说的,边查边写不是一样的道理吗?不会却不去查……

然而对于动态 ID 的元素,它使用到的必定是一些相对高级的选择器,三言两语很难说得清楚,或者只能说清楚其中很小的一个点。自己查询一下相关的知识都可以有所了解,以后再用就有线索了。但让别人给你举出其中的一个例子,那真的就是溺水三千只取一瓢。

如何本地进行调试

文章中我已经把道理讲的很清楚了,如果是一个网络上的脚本,那么脚本管理器可以自动更新,或者你手动点一下更新按钮,它自动获取新的内容。

所以你在本地搭建一个 http 服务器就可以了,当然这也需要相关的知识,如果听到这里不能够理解……让我从头讲起来话就多了。

当然还有一些其他的方法,这又要区分很多情况,根据你所使用的脚本管理器来采取不同的方法。

暴力猴如果给好了相应的权限,它可以直接导入本地的脚本。

Tampermonkey 则不能使用这样的方法,但是可以在元数据里引用本地的脚本。

这里边还有许多细节的区别,比如你本地文件更新之后,是不是需要在脚本管理器里进行一下相应的更新。真的解释起来,关联的知识非常多,所以依然回到了第1个问题,你必须有相应的基础知识储备,否则每一个问题都牵连大量的相关基础知识,这就没有办法解答了。同时还要有自己动手尝试的探索精神。

而你自己如果又只想着解决当前问题,不愿意动手探索……

如何自动发布

你会更新的非常频繁吗?你这样一个小脚本在开发的时候会大量使用到 git 吗?如果不是的话,你使用这种自动发布的方法未必比你每一次把新的代码粘贴进去更简单。

这个问题又涉及到许多的相关知识,github 的使用,webhook 的设置,raw 文件的获取。你可以认为它们都不算太难,甚至我是在故弄玄虚……但是在 greasyfork 的后台以及帮助里面都有中文的说明,你不打算照着尝试一下吗?难道要别人给你逐步的截图讲解?


唉,讲这么多字,怕不是你看完之后认为我还是没有正面解答问题吧……

1 Like

没关系,因为我压根就没打算精进。。。
只要我的技术水平能基本满足我个人需求就足够了~

毕竟我学习编程语言的目的推动力,仅仅是单纯的为了满足我个人日常生活中产生的小需求,因为我不喜欢麻烦别人、求别人帮我写、帮我实现什么的,能自己解决的就自给自足~

当然我也没说我是对的,只是意外看到个学习历程跟我很像的感叹下罢了~

很多以编程为爱好的人,学习方法都差不多。在兴趣的引导下去进行探索是最快乐的。

他今天这个完全属于一种特例,就是几乎没有多少基础知识,然后去挑战一个比较复杂的问题。虽然提问的都是细节,但是每一个问题都难以解答,因为后面牵扯了一大堆基础知识。

(顺便一般的编程语言,只要了解基本的逻辑控制就可以解决小问题了。但到了前端……起码得先了解三种语言的基础知识,虽然前面两种(htm、css)很多人觉得算不上编程语言吧,但是相关的知识却并不算少。

所以我学一种新编程语言时,第一步就是先把基础教程看一遍(语法、函数等最基础的),不说都记住,起码有个印象需要的时候知道怎么查。

另外,可能是因为我习惯自给自足的性格,导致我连问都不喜欢问别人(这也算是麻烦别人了),碰到问题就一直查一直查,如果完全没有头绪就暂时搁置,可能过段时间见识提高、技术提高后就能解决了(确实很多问题就是这样解决的。。。 :flushed:

非常非常赞同这种做法呢~~

可以记不住,但是总得有个大概的印象,能够按图索骥。要不都不知道这个语言能干啥,怎么利用它啊

抖个机灵,好像有的库会自动生成随机的id,也不是说故意做预防措施 :rofl:

你说的没有错。

但这个问题他是在论坛和群里同时向我提问的,所以无论在哪一边回答,对于其他读者来说都缺失了一定的信息,导致不便讨论。

事实是这个页面中只有他要修改的那一个链接元素具有 ID,然后是一个随机 ID。这种情况盲猜大概率也是对方故意做的防范。