web-dev-qa-db-ja.com

uBlock-特定の単語のテキストを含む要素を非表示にしますか?

divspanまたはpとその子がテキスト部分に特定の単語がある場合に非表示になるように、カスタムフィルタールールを作成することは可能ですか、つまりTrump

たとえば、私はこの構造を持っています

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

私はこれを試しましたが、効果がありません:

##div>a:has-text(Trump)
14
0__

##div>a:has-text(/Trump/)をお試しください

18
Arthur

そうみたいです has-textセレクターは、トップレベルドメインが指定されている場合にのみ機能します。たとえば、次の例はGuardian Webサイトでのみ機能します。

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

: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/) areのようなスラッシュは必要ありません。それらを使用すると、内部の式は RegEx として評価され、さらに多くのワークロードが発生します。

0
FatBat