3

事前定義されたキーワードを含むリンクを削除する、ブラウザー (Opera、Chromium) 用のユーザー スクリプトを作成したいと考えています。たとえば、リンクがブラックリストに<a href="foo">bar</a>含まれている場合、そのリンクはページから単純に消える必要があります。foo

最初にサイトを取得してフィルタリングする方法を示していますが、ユーザースクリプトを介して直接これを行いたいと考えています。ページの読み込みごとにフィルターを適用する方法はありますか?

4

3 に答える 3

5

document.linksコレクションを取得します。それらの.hrefプロパティのいずれかがブラックリストに一致する場合、そのstyle.displayプロパティを'none'に設定します。

例えば

function removeLinks () {
  var blackList = /foo|bar|baz/;
  var link, links = document.links;
  var i = links.length;

  while (i--) {
    link = links[i];
    if (blackList.test(link.href)) {
      link.style.display = 'none';
    }
  }
}

編集

重複したリンクを削除することも同様の演習です。最初にリンクHTMLCollectionを単純な配列に変換し、次にそれらを反復処理するときに、hrefs をオブジェクトの作成プロパティとして使用します。href がすでにプロパティである場合は、上記のメソッドまたはlink.parentNode.removeChild(link)を使用して非表示にします。

于 2011-06-29T07:35:44.080 に答える
0

XPATHとそのcontains() 関数を使用して、 document.evaluate経由でリンクを一致させることができます。

Dive Into Greasemonkeyには、XPATH を使用してノードを選択および反復する例があります。

for (var i = 0; i < blacklist.length; i++) {
  var links = document.evaluate('//a[contains(@href, "' + blacklist[i] + '"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  for (var j = 0; j < links .snapshotLength; j++) {
    var link = links.snapshotItem(j);
    link.parentNode.removeChild(link);
  }
}
于 2011-06-29T07:55:28.820 に答える
-1

このようなものを使用できます

$("a[href*='" + foov + "']").css('display', 'none')
于 2011-06-29T07:42:20.100 に答える