Как удалить ссылки со страницы через JavaScript? - PullRequest
3 голосов
/ 29 июня 2011

Я хочу написать пользовательский скрипт для моих браузеров (Opera, Chromium), который удаляет ссылки, содержащие предопределенные ключевые слова. Например, ссылка <a href="foo">bar</a> должна просто исчезать со страницы, когда foo является частью черного списка.

Как удалить дубликаты ссылок со страницы, кроме первой показывает, как получить и отфильтровать сайт, но я хочу сделать это напрямую с помощью пользовательского скрипта. Есть идеи, как бы я применил фильтр к каждой загрузке страницы?

Ответы [ 3 ]

5 голосов
/ 29 июня 2011

Получить коллекцию 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) .

0 голосов
/ 29 июня 2011

Вы можете использовать XPATH , а функция содержит () для сопоставления ссылок через 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);
  }
}
0 голосов
/ 29 июня 2011

Вы можете использовать что-то вроде этого

$("a[href*='" + foov + "']").css('display', 'none')
...