user3361146
user3361146

Reputation: 103

Use JavaScript to find a specific link

Could anyone help me with a function for JavaScript which searches the source code and compares all of the links on the site with the specific link I am looking for.

For example: I am executing the JavaScript on www.youtube.com and I am looking for one specific YouTube link.

It could look like this (which of course doesn't work):

if(document.body.indexOf("http://www.youtube.com/SPECIFICURL")!== -1){
    console.log("Url found");
}else{
  console.log("Url not found");

}

How can I accomplish this?

Upvotes: 4

Views: 11409

Answers (4)

DontVoteMeDown
DontVoteMeDown

Reputation: 21465

Try querySelectorAll() with CSS3 selectors:

document.querySelectorAll('a[href*="http://www.youtube.com/SPECIFICURL"]')

Fiddle

This selector says find all links with an href attribute that contains a specific string. Lets break this down a little bit:

  • a - this is the element type, e.g. "link"
  • href - this is the element attribute
  • *= - this essentially means contains. There are different type of equality checks that can be used: starts with, contains word, ends with, etc. The jQuery selectors documentation is quite good.
  • "..." - everything in quotes after the equal sign is the substring the query is looking for.

Upvotes: 13

raviolicode
raviolicode

Reputation: 2175

function find_link_by_href(address)
    links = document.getElementsByTagName("a");

    for(var i = 0; i < links.length; i++) { 
      if( links[i].href === address ) {
        console.log("Url found"); 
        return; 
     } 
 }

You can call it like this:

find_link_by_href("http://www.youtube.com/SPECIFICURL");

Upvotes: 4

cookie monster
cookie monster

Reputation: 10972

Use Array.prototype.some to see if at least one element in document.links has the href you're looking for.

var has_link = [].some.call(document.links, function(link) {
   return link.href === 'http://www.youtube.com/SPECIFICURL';
});

You can patch it in old browsers using the patch found at MDN Array#some

Upvotes: 2

newTag
newTag

Reputation: 2169

You can use document.links to get the anchors, then just loop through grabbing the href, like this:

    var arr = [], l = document.links;
    for(var i=0; i<l.length; i++) {
      arr.push(l[i].href);
    }

//arr is now an array of all the href attributes from the anchors in the page

See here.

Then loop through the array to check for your specific link.

Upvotes: 1

Related Questions