uBlock-隐藏任何包含给定单词的文本的元素?

uBlock-隐藏任何包含给定单词的文本的元素?

是否可以编写自定义过滤规则,以便当文本部分中出现特定单词时,任何divspan或及其子项都会被隐藏,即?pTrump

例如,我有这个结构

<div>
  <a class="..." href="...">Donald Trump said blablabla.</a>
</div>

我尝试了这个,但是没有效果:

##div>a:has-text(Trump)

答案1

尝试##div>a:has-text(/Trump/)

答案2

:has-text()程序化美容滤镜。这些“必须始终是具体的,即以它们要应用的站点的主机名作为前缀。”

程序化美容过滤器功能强大,但如果可能的话应避免使用,因为它们会减慢网站的加载速度(必须插入 JavaScript 并访问许多节点)。

如果你仍然想要它,它应该看起来像这样:

example.com,domain.com,anotherexample.com##div>a:has-text(Trump)

可以改变这种行为因此,非特定的程序化美容滤镜##div>a:has-text(Trump)可以发挥作用,但绝对不推荐。它会减慢您浏览器的每一页速度,并且外部过滤列表中的错误可能会自由转动并产生大量误报/过度阻止。

您可以在以下位置找到该选项

  1. uBO 仪表板
  2. 设置
  3. 勾选“我是高级用户”
  4. 阅读并理解警告
  5. 点击齿轮
  6. 将“allowGenericProceduralFilters”更改为true
  7. 点击“应用更改”

ps: 正斜杠就像:has-text(/Target words/)不是需要。如果你使用它们,里面的表达式将被评估为正则表达式这将造成更大的工作量。

答案3

似乎has-text选择器仅在指定顶级域名时才有效。例如,以下内容有效,但仅限于《卫报》网站:

theguardian.com##.fc-item__container:has-text(Trump)

相关内容