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”
が付くので、「外部へのリンク」のみにしたい場合は、以下のスニペットで「外部リンクだけ」にできるので参考にしてみてください。