JavaScript | HTML / CSS 連携:テキスト・リンク・画像 - target属性

JavaScript JavaScript
スポンサーリンク

target 属性は「リンクを“どの窓で開くか”を決めるスイッチ」

<a> タグの target 属性は、
「このリンクをクリックしたとき、どこで開くか」 を指定するためのものです。

行き先そのものを決めるのは href
その “開き方” を決めるのが target

つまり、
href = 行き先の住所
target = どの窓で開くか

という役割分担になっています。


target の代表的な値とその意味

_self(デフォルト)=今のタブで開く

<a href="/about" target="_self">このサイトについて</a>

target="_self"
「今開いているタブでそのまま遷移する」という意味です。

実は、target を書かないと自動的に _self になります。

普段のページ遷移はほぼこれです。


_blank=新しいタブで開く(最もよく使う)

<a href="https://example.com" target="_blank" rel="noopener">
  公式サイト(新しいタブで開く)
</a>

_blank
「新しいタブ(またはウィンドウ)で開く」 という指定。

外部サイトへ飛ばすときによく使われます。

ただし、_blank には重要な注意点があります。
必ず rel="noopener"(または noopener noreferrer)をセットで付けること。

理由は後ほど深掘りします。


_parent と _top(フレームを使う特殊なケース)

現代の Web ではあまり使いませんが、
iframe やフレーム構造の中で使う値です。

_parent
一つ上のフレームで開く

_top
フレームをすべて無視して、最上位のウィンドウで開く

普通の Web ページではほぼ使わないので、
初心者のうちは _self_blank だけ覚えれば十分です。


target=”_blank” を使うときの超重要ポイント:rel=”noopener”

なぜ rel=”noopener” が必要なのか

target="_blank" を付けると、
リンク先のページは 元のページを操作できてしまう ことがあります。

具体的には、
リンク先のページが window.opener を使って
元のページを書き換えたり、
悪意あるページにリダイレクトさせたりできる可能性があります。

これを防ぐのが rel="noopener"

<a href="https://example.com" target="_blank" rel="noopener">
  新しいタブで開く
</a>

noopener を付けると、
リンク先から window.opener が使えなくなり、
元のページが安全になります。

target=”_blank” を使うときは、
rel=”noopener” をセットで書くのが現代の標準ルール。


画像リンクやボタン風リンクでも target は使える

画像をクリックして新しいタブで開く

<a href="large-photo.jpg" target="_blank" rel="noopener">
  <img src="thumb.jpg" alt="写真のサムネイル">
</a>

画像をクリックして大きい画像を開くときなどに便利です。

ボタン風のリンクでも target は有効

<a href="https://example.com" class="btn" target="_blank" rel="noopener">
  外部サイトへ
</a>

見た目はボタンでも、
「ページ遷移」なら <a> を使うのが正しいです。


target を使うべき場面・使わないべき場面

使うべき場面:外部サイトへ飛ばすとき

ユーザーが「戻る」操作をしやすいように、
外部サイトは新しいタブで開くことが多いです。

例:SNS、公式サイト、外部資料など。

使わない方がいい場面:サイト内のページ遷移

サイト内のページを _blank で開くと、
タブが増えすぎてユーザーが混乱します。

サイト内リンクは基本 _self(デフォルト)で OK。


JavaScript と target の関係

JS でリンクを制御するときも target は有効

<a href="/download" id="dl" target="_blank" rel="noopener">ダウンロード</a>
document.querySelector("#dl").addEventListener("click", (e) => {
  console.log("ダウンロードリンクがクリックされました");
});
JavaScript

この場合、
JavaScript の処理が走った後、
新しいタブで /download が開きます。

JS で target を動的に変えることもできる

const link = document.querySelector("#dynamicLink");

// 条件によって開き方を変える
if (user.isPremium) {
  link.target = "_blank";
  link.rel = "noopener";
} else {
  link.target = "_self";
}
JavaScript

「プレミアムユーザーは新しいタブで開く」
といった制御も可能です。


初心者として「target 属性」で絶対に掴んでほしいこと

target は
「リンクをどのタブ・ウィンドウで開くかを決める属性」 です。

_self(今のタブ)
_blank(新しいタブ)
この 2 つをまず覚えれば十分。

そして、
_blank を使うときは必ず rel="noopener" を付ける。
これはセキュリティ上の必須ルールです。

あなたが <a> を書くときに、
「このリンクは“どこで開く”のがユーザーにとって自然か?」
と一度考えられるようになったら、
もう target 属性を“ただのオプション”ではなく、
“ユーザー体験と安全性を設計する道具”として扱えている状態です。

タイトルとURLをコピーしました