如何移除网页版b站的"话题"? 油猴脚本 - 删除页面上内容
信息茧房未必没有优点
如果只是为了脚本 如下 能直接用(至少Windows上的Edge可以 没有在其它设备测试过)
代码也许不是最好 但是能用 之前没学过JS CSS WebAPI什么的 昨天因为一直看到一些东西受不了了 晚上临时学的 所以后面说的一些可能不太专业严谨 只是基于我自己的理解 "能用就行"
b站只是顺便 的确一直想去掉这些东西 代码也简单 作为例子不管实用性还是简明性都不错
让我受不了的是别的
运行有问题评论说 写专栏的时候改了一点懒得测试了 理论上可以
首先 确定目的: 删除特定页面上的特定内容
没有直接找到能达到该目的的教程 且ChatGPT直接生成的结果有问题 所以我想这还是有意义的
大概解释一下吧先
这个东西的基础原理是什么呢 检查HTML文件内容 删除不要的就好了 在上面的代码里是比较清晰的
var在JS里是定义全局变量(let局部 const常量) 在这里var和let都行理论上
document表示目前的那个html文件内容 跟着的的是方法 找到第一个class="topic-panel"的元素
.topic-panel这里的.表示查找以这个为class的 注意 如果看到类似class="abc 456 _789"这样中间有空格的情况 写的时候空格应该变成. 也就是.abc.456._789
如果不加则是以topic-panel为tag的元素 常见的元素大致长这样<p> <img> <div> <script> 这个可以和上面那个结合 比如一个tag为div的且class为"dog"的就可以写成div.dog
#topic-panel则是查找以topic-panel为id的元素 我没用过 不知道
那么我是怎么知道它是这个class的呢 按F12

出现类似这样的界面 这里最左上角的按钮点一下 就可以很方便的查看页面上不同内容对应的html元素信息了

通过这个方法可以比较容易的找到目标所特有的class
当然未必是class 也可能是tag或者id
remove方法就很字面 删除这个元素
解释完了这段下面代码 那么套在这段代码外面的是什么呢
var topicPanel = document.querySelector(".topic-panel")
topicPanel.remove()
要回答这个问题 可以显示着不用外面这个直接运行看看
你会发现直接运行并不能删除想删的内容 它还在那 (chatgpt给我的最初版本差不多就这样)
这个原因我想也是很容易想明白的
页面加载也不是一瞬间就加载好的 html那么多字不可能一瞬间就都出现了 大概是逐渐出现的 如果脚本在要删除的目标出现之前就执行完成了 那自然不能删除想删除的目标
这也就引出了waitForKeyElements这个函数的目的了 只有满足条件了 才会执行函数
这里的条件就是等到有class="topic-panel"的元素出现再执行删除它的函数
这里紧随的的function()可能会有些confusing 它并不是调用前面写的函数 而是表示一个临时的函数 也就是满足条件后执行的这个用于删除的函数
注意 waitForKeyElements这个函数不是直接就能用的 注意一下代码上面的部分
我的理解类似于import或者#include
我不知道第一个必要不必要 懒得试了 反正代码能跑
知道了大概原理 就可以写一些更加适合自己的代码了
比如你可以写代码把平时看视频旁边的推荐删掉
比如(这个是我的某个脚本的一部分且修改过 仅作示例)
或者更加具体一点 写根据时长和关键词筛选b站视频
(本来想写了发出来方便没基础的人用的 一方面我觉得没有图形界面 直接在代码里该参数很多人都会懒得用 而我又懒得深入下去
代码没写完 只是告诉你能写)