Dustin
Dustin

Reputation: 6307

Remove all target="_blank" from links

I'm messing around with jQuery and ran in to a problem I can't seem to solve. I know it's possible with jQuery, but can't find a proper example to work off of. I have a page with a couple regular links with the attribute/value target="_blank" added to it.

What's the best approach with jQuery/JavaScript to remove that value from every link on the page?

Upvotes: 21

Views: 38015

Answers (2)

5imone
5imone

Reputation: 433

A bit late to the party, I know! Anyway, here's another solution:

document.addEventListener('click', e => e.target.removeAttribute('target'));

This line does not immediately remove the target from every link, but it runs only when a user interacts with one. This has two perks:

  1. Avoids the potential resource waste caused by the forEach.
  2. Affects also the links that are rendered after the page load.

Upvotes: 2

alex
alex

Reputation: 490263

This should do it with jQuery...

$('a[target="_blank"]').removeAttr('target');

With a modern browser...

Array.from(document.querySelectorAll('a[target="_blank"]'))
  .forEach(link => link.removeAttribute('target'));

With an older browser such as earlier IEs...

var links = document.links, i, length;

for (i = 0, length = links.length; i < length; i++) {
    links[i].target == '_blank' && links[i].removeAttribute('target');
}

Upvotes: 50

Related Questions