Add target = "_ blank" to communicate with JavaScript

I need to write a method that takes a String and parses it for links (href). If he finds the link, he should add target = "_ blank" to the link if it is not already.

Example: Input string "

<a href="www.google.com">Google</a> and <a href="www.yahoo.com"> target="_blank">Yahoo</a> are search engines 

... should result in a line output

 <a href="www.google.com" target="_blank">Google</a> and <a href="www.yahoo.com" target="_blank">Yahoo</a> are search engines 

Any idea how to implement this?

+7
source share
4 answers

Not very difficult with regular js.

 var links = document.getElementsByTagName('a'); var len = links.length; for(var i=0; i<len; i++) { links[i].target = "_blank"; } 
+10
source

Excessive issue, but applicable with plain JavaScript:

 function addBlankTargets(s) { return (""+s).replace(/<a\s+href=/gi, '<a target="_blank" href='); } 

Or using jQuery:

 function addBlankTargets(s) { var p = $('<p>' + s + '</p>'); p.find('a').attr('target', '_blank'); return p.html(); } var s = '<a href="www.google.com">Google</a> and ' + '<a href="www.yahoo.com">Yahoo</a> ' + 'are search engines.'; var x = addBlankTargets(s); x; // => '<a href="www.google.com" target="_blank">Google</a> and // <a href="www.yahoo.com" target="_blank">Yahoo</a> // are search engines.' 
+6
source

You can use jQuery to parse an element, add an attribute, and then read the HTML:

  var addTarget = function(input) { return $('<span>' + input + '</span>').find('a').attr('target', '_blank').html(); }; console.log(addTarget('<a href="www.google.com">Google</a>')); 
0
source

in two lines

 var links = document.getElementsByTagName('a'); for(i in links) links[i].target=="_blank"?links[i].style.color="#f0f" : links[i].style.color ='#0f0' 

jsfiddle

0
source

All Articles