WordPress 4.8 ぐらいからリンクにtarget=”_blank”を付けると自動的に「noopener noreferrer」が付与されるようになっています。
このtarget=”_blank”とrel=”noopener noreferrer”を、a タグに付与するコードをJavaScriptで作ってみました。
簡単なコードですが、その解説です。
.querySelectorAll()
JavaScriptの querySelectorAll() は、指定したCSSにセレクターに一致するNodeを返すメソッドです。
elementList = parentNode.querySelectorAll('CSSのセレクタ');
NodeList はNodeの集合体で、Nodeは要素1つ1つを指すものとして使われます。
ので、Nodeは「点」。NodeListは点と点が集まった「線」のようなものです。
aタグにtarget=”_blank”を追加したサンプル
早速サンプルです。
以下 a タグの「サンプルリンク」に 別タブでページを開くtarget="_blank"と、rel=”noopener noreferrer” をJavaScriptで追加しています。
Chromeのデベロッパーツールで確認すると、target=”_blank” が追記されているので、確認してみてください。
target=”_blank”には、この2つのrel属性をつけることが推奨されるので、詳しくは以下の記事もご覧ください。
実装の手順と方法
実装の手順と方法について、まずは簡単に解説します。
HTMLを設置したい場所に記述します。
<ul class="linkList">
<li><a href="https://dubdesign.net/">サンプルリンク1</a></li>
<li><a href="https://dubdesign.net/">サンプルリンク2</a></li>
<li><a href="https://dubdesign.net/">サンプルリンク3</a></li>
</ul>
基本、この記事のスニペットはページ内の a タグを全て取得した上で、「target="_blank"」の付与をURL別にする・しないにしてくれます。
ので、設置条件によっては割愛してOKです。
次に、JavaScriptのコードをページに記述します。
コードは <body>〜</body> で、</body> の閉じタグ(クロージングタグ)の前に記述しましょう。
//aタグを取得
const hrefLink = document.querySelectorAll('.linkList li a');
window.addEventListener("DOMContentLoaded", () => {
// aタグに追加
for (i = 0; i < hrefLink.length; i++) {
hrefLink[i].target = "_blank";
hrefLink[i].rel = "noopener noreferrer";
}
console.log(hrefLink)
});
これで完了です。
ざっくりとしたコードの解説
コードは、HTML・JavaScriptの2種です。見た目やレイアウトは特にいじっていないので、CSSは割愛します。
HTML
HTMLは、li の中に a タグを入れたシンプルなつくりです。ここで記述したa タグに、 taeget="_blank" の記述はありません。
<ul class="linkList">
<li><a href="https://dubdesign.net/">サンプルリンク1</a></li>
<li><a href="https://dubdesign.net/">サンプルリンク2</a></li>
<li><a href="https://dubdesign.net/">サンプルリンク3</a></li>
</ul>
JavaScript
JavaScriptは、.querySelectorAll で取得する a タグを指定して、取得した要素全てに for文 のループで target="_blank"と、rel=”noopener noreferrer” を付与します。
//aタグを取得
const hrefLink = document.querySelectorAll('.linkList li a');
window.addEventListener("DOMContentLoaded", () => {
// aタグに追加
for (i = 0; i < hrefLink.length; i++) {
hrefLink[i].target = "_blank";
hrefLink[i].rel = "noopener noreferrer";
}
console.log(hrefLink)
});
これだけで target="_blank" を付与する簡単なコードです。
さいごに
今回の記事では、全ての a タグにtarget="_blank"と、rel=”noopener noreferrer” が付くので、「外部へのリンク」のみにしたい場合は、以下のスニペットで「外部リンクだけ」にできるので参考にしてみてください。

