我是一个论坛社区的成员,该社区的网站所有者设置了 Akismet 作为人类版主的替代方案,然后他(所有者)就不再关注了。 Akismet 似乎对机器人处理得很好,但一些人类垃圾邮件发送者已经溜走了,并在论坛中向不相关产品的链接发送垃圾邮件。社区感到沮丧。
论坛被设置为 UL 元素,每个撰写的帖子都被列为 LI。每个 LI 都有一些 DIV 来显示各种元数据,其中包括一个带有每个作者个人资料锚点的 DIV。大概是这样的……
<div>
<ul>
<li id="[random-id1]">Good Post</li>
<li id="[random-id2]">
<div>
<a class="title" href="spam-post.html">Spam Post Title</a>
</div>
<div id="bad-post-meta">
<a href="member.php/12345-naughtyspammer" class="username" title="Started by NaughtySpammer on Yesterday 05:41 AM">NaughtySpammer</a>
</div>
</li>
<li id="[random-id3]">Good Post</li>
</ul>
</div>
我以前使用过 uBlock 来删除元素,但没有这么复杂。我希望 uBlock 在
a.username
元素中搜索已知的列入黑名单的垃圾邮件名称,并隐藏它们各自的 LI 祖先元素。
如何隐藏违规的 LI?我怀疑我错过了一些简单的事情!首选
display:none;
的等价物。
ABP 的 Snippets 库有一个
hide-if-contains
代码片段,看起来可能有用,但 ABP 的 Snippets 似乎是 uBlock 不支持的 EasyList 功能之一。我找不到相当于 hide-if-contains
的 uBlock,它可能看起来像这样(如果我理解正确的话):
forumsite.com#$#hide-if-contains naughtyspammer li
uBlock 表示
#$#
语法无效。
forumsite.com##li:has(a.username[title*="NaughtySpammer"])
满足了我的需求,但我不希望看到其他解决方案,特别是如果它们更方便或者允许在一行中包含多个垃圾邮件发送者名称。