target="_new"だと一回しか別タブで開かない問題(target="_blank"を使おう)

【結論】

・HTMLのリンクに対して、target="_new"を設定した場合、リンクを別タブで開いてくれる

・但し開いた別タブ内で、再度target="_new"を設定しているリンクは別タブで開かない

・何度も別タブで開く様にするには、target="_blank"を設定する

【目次】

【本題】

target="_new"だと一回しか別タブで開かない

HTMLにはtarget属性というリンクの表示先を指定するプロパティが存在します。

これを指定することで、リンクを別タブで開くことが可能になります。

以下が、target属性を指定した場合のサンプルコードです。

<a target="_new" href="/posts/new">記事を投稿</a>

しかし、このコードだと、別タブでリンクを開いた後、更に同じリンクを開くと、それは別タブでは開かなくなります。

今回は、この現象の原因と対策についてまとめます。

解決策:target="_blank"を使う

先に解決方法から説明します。それはtarget="_blank"を使うことです。

<a `target="_blank"` href="/posts/new">記事を投稿</a>

こうすることで、リンクを踏むと毎回別タブが開く様になります。

原因:target属性で任意の名前を設定した場合、同じタブを更新してしまう

そもそも、HTMLのtarget属性は、表示先のブラウジング・コンテキスト(ウィンドウやタブ)を指定するものです。

target="_new"と設定した場合、まずnewという名前のブラウジング・コンテキストを探し、無ければ新しくnewという名前のブラウジング・コンテキストを作成します。

これにより、1回目は新しいタブが生成されます。

しかし、2回目以降は、既にnewという名前のブラウジング・コンテキストが存在するので、そのページを更新するだけとなり、別タブを開きません。

ちなみに、名前は任意で設定できるので、new以外でも(例えばhogeなど)でも同様の現象が発生します。

対して、target="_blank"と設定した場合、毎回名前の無いブラウジング・コンテキストを新たに作成します。

その為、何回やっても新しいタブが生成されたのです。

なお、表示先のブラウジング・コンテキストをタブにするのか?ウィンドウにするのか?といった部分は、ブラウザに依存します。

今回試したGoogleChromeであれば、デフォルトでタブで開きますが、他ではそうならない可能性があるので注意が必要です。

参考情報

target="_new"について

HTML5 & CSS3 リファレンス - target属性 (コンテンツを表示する対象)

target=”_blank” の正しい使い方講座 |SEO Japan by アイオイクス

target 属性(リンクの表示先を指定) | HTML (HTML Living Standard) タグリファレンス | W3 Watch Reference