HTML Academy · レッスン

リンクを新しいタブで開く方法とdownload属性

リンクの動作にtarget属性とdownload属性を使います。

レッスン 3/413 ステップ

「リンクを新しいタブで開く方法とdownload属性」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。

新しいタブで開く

target属性を使用すると、リンク先のドキュメントを開く場所を制御できます。

<a href="https://example.com" target="_blank">Open in new tab</a>

<!-- target values:
  _blank  → new tab (or window)
  _self   → same tab (default)
  _parent → parent frame
  _top    → full window (exits frames)
-->

_blankのセキュリティリスク

対策なしでtarget="_blank"を使用すると、セキュリティの脆弱性が生じます。

  • 新しいページからwindow.openerを通じてリンク元にアクセスできます
  • 悪意のあるページによって元のタブを別のページへリダイレクトされる可能性があります
  • この攻撃はリバースタブナッピングと呼ばれます

rel=noopener noreferrer

target="_blank"を使用する場合は、必ずrel="noopener noreferrer"を追加してください。

<a href="https://example.com"
   target="_blank"
   rel="noopener noreferrer">
  Open Safely
</a>
<!-- noopener: prevents access to window.opener -->
<!-- noreferrer: also hides referrer header + implies noopener -->
<!-- Modern browsers add noopener by default, but always include it -->

新しいタブを開くタイミング

target="_blank"に関するUXガイドライン:

  • ユーザーがアプリから移動することを想定していない外部サイトに使用する
  • 参考資料(PDFやガイド)に使用する
  • 内部ページのナビゲーションには使用しない
  • 必ずユーザーに知らせる — 「新しいタブで開きます」と示すアイコンやタイトルを追加する

新しいタブで開くことをユーザーに示す

リンクが新しいタブで開くことをユーザーに知らせます。

<a href="https://example.com"
   target="_blank"
   rel="noopener noreferrer"
   aria-label="Visit Example (opens in new tab)">
  Visit Example
  <span aria-hidden="true">↗</span>
</a>
<!-- aria-label covers screen reader announcement
     The arrow icon gives visual users a hint -->

download属性

download属性を使用すると、リンク先へ移動する代わりに、リンク先のファイルをブラウザーにダウンロードさせることができます。

<a href="/reports/q4-report.pdf" download>
  Download Q4 Report
</a>

<!-- Optionally specify the filename: -->
<a href="/api/export" download="my-data-2025.csv">
  Export CSV
</a>

download属性の制約

download属性には制約があります。

  • 同一オリジンのURLでのみ機能する
  • クロスオリジンのダウンロードには、サーバーがContent-Disposition: attachmentを送信する必要がある
  • downloadで指定するファイル名は提案値であり、サーバーヘッダーによって上書きされる可能性がある

Data URIによるダウンロード

Data URIを使用すると、生成したコンテンツをダウンロードできます。

<a href="data:text/plain;charset=utf-8,Hello%20World!"
   download="hello.txt">
  Download Text File
</a>
<!-- Generates a .txt file from inline data -->
<!-- Useful for generating small files client-side without a server -->

JavaScriptとリンクのターゲット

JavaScriptでナビゲーションを処理する場合は、target="_blank"の乱用を避けてください。

// If you must open a new window programmatically:
const win = window.open('https://example.com', '_blank', 'noopener,noreferrer');
// noopener via window.open requires the features string
// Not via rel on window.open

ping属性

ping属性を使用すると、リンクがクリックされたときにPOSTリクエストが送信されます(アクセス解析用)。

<a href="/destination" ping="/analytics/track">
  Track this click
</a>
<!-- Browser sends POST to /analytics/track when link is clicked -->
<!-- Rarely used — blocked by many browsers -->
<!-- Most analytics use JavaScript instead -->

リンクのtype属性

type属性を使用すると、リンク先リソースのMIMEタイプをヒントとして示せます。

<a href="/report.pdf" type="application/pdf">
  Download PDF Report
</a>
<a href="/data.json" type="application/json">
  JSON Data
</a>
<!-- Informational hint only — browser does not enforce it -->

確認問題

target="_blank"と必ず一緒に指定すべきセキュリティ属性は何ですか。

まとめ:targetとdownload

リンクの動作を制御する属性:

  • target="_blank" — 新しいタブで開く
  • _blankと一緒に必ずrel="noopener noreferrer"を追加する
  • リンクが新しいタブで開く場合は、視覚的にユーザーへ知らせる
  • download — ナビゲーションの代わりにファイルのダウンロードを開始する
  • download="filename" — ダウンロード時のファイル名を提案する
無料で開始

AI チューターと学ぶ HTML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
40
レッスン
159

よくある質問

「リンクを新しいタブで開く方法とdownload属性」レッスンは無料ですか?

はい。「リンクを新しいタブで開く方法とdownload属性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。

「リンクを新しいタブで開く方法とdownload属性」で何を学びますか?

リンクの動作にtarget属性とdownload属性を使います。 ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

HTML Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「リンクを新しいタブで開く方法とdownload属性」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このHTML Academyレッスンでコードを書いて実行できますか?

はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. anchor要素とhref属性
  2. 絶対URLと相対URL
  3. リンクを新しいタブで開く方法とdownload属性
  4. セクションへのリンクとフラグメント識別子
← HTML Academyに戻る