Search code examples
javascriptuserscripts

How do I remove links from a page via JavaScript?


I want to write a user script for my browsers (Opera, Chromium) that removes links containing predefined keywords. For example, a link <a href="foo">bar</a> should simply vanish from the page when foo is part of the blacklist.

How do i remove duplicate links from a page except first shows how to get and filter a site, but I want to do this directly via a user script. Any ideas how I would apply the filter on every page load?


Solution

  • Get the document.links collection. If any of their .href properties match your blacklist, set their style.display property to 'none'.

    e.g.

    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';
        }
      }
    }
    

    Edit

    To remove duplicate links is a similar exercise. First convert the links HTMLCollection to a plain array, then as you iterate over them use their hrefs as create properties of an object. If the href is already a property, hide it using the above method or link.parentNode.removeChild(link).