トピックを検索
新しいタブで開くことを伝えないリンク
ショップのサイズガイドへのリンクが、言葉では何も伝えずに新しいタブで開くため、タブが開いたことに気づかない人は、多くのブラウザーで「戻る」を押してもシャツのページに戻れません。
<a href="/size-guide" target="_blank"> 問題
新しいタブが開いたことが見えない人や、気づかない人は、元のページを見失います。多くのブラウザーでは、「戻る」を押しても、そのページへ戻れません。
ある衣料品のショップの商品ページで、リネンのシャツを4つのサイズで売っています。価格の下には「どのサイズにするか迷ったら」という文があり、サイズガイドへリンクしています。ショップは利用者に戻ってきて買ってほしいので、このリンクは target="_blank" で新しいタブに開くようにしてあります。リンクの言葉は、そのことを何も伝えません。スクリーンリーダーの利用者がリンクへ移動すると「サイズガイドを見る、リンク」と聞こえます。たどると、ほかの新しいページと同じようにガイドが読み上げられます。手持ちのシャツを測ってMサイズだと分かり、選ぶために「戻る」を押します。何も起きません。ガイドは新しいタブの最初のページなので、パソコンのChrome、Edge、Firefoxには戻る先がなく、ボタンは灰色になっています。シャツのページは、左隣のタブで開いたままです。しかし、そこにあることを伝えるものは何もありませんでした。
同じリンクは、ほかの形でもつまずきます。
- リンクの言葉の後に、四角から矢印が出るアイコンがある。新しいタブを表すおなじみの印だが、
aria-hidden="true"のため、スクリーンリーダーでは「サイズガイドを見る、リンク」としか聞こえない。アイコンを知らない人にも、知らせとしては伝わらない。 - コンテンツ管理システムが、配送会社の追跡ページなど、サイトの外へ出るリンクすべてに
target="_blank"を付ける。ページのリンクのほとんどが新しいタブで開くのに、それを伝えるものは1つもない。 - ボタンやリンクのクリックのハンドラーが
window.open()を呼ぶ。結果は同じだが、マークアップを見ても、それと分かる属性がない。
達成基準3.2.5「要求による変化」はレベルAAAです。新しいウィンドウやタブを開くといった状況の変化は、利用者が求めたときにだけ起きるようにするか、そうした変化を止める手段を用意しなければなりません。このリンクは失敗例F22に当たります。新しいウィンドウを開くことを伝える文字のないリンクは、利用者が求めていないウィンドウを開きます。リンクをたどることは新しいページを求めることで、そのページを別の場所で開くことまで求めてはいません。ページは属性1つでこれができ、ブラウザーはそのことを何も伝えないため、利用者は変化が起きてから気づくことになります。
リンクで新しいウィンドウを開く場合の十分な達成方法の1つがH83です。target はそのままにして、知らせる言葉をリンクのテキストに入れるため、誰もが押す前に分かります。同じタブで開けば、リンクをたどって求めたこと以外は何も変わらないため、これも適合します。参考の達成方法G200は、新しいタブを開くのは必要な場合だけにするよう勧めています。アイコンだけでは、文字で伝えたことになりません。この例のように名前がなければスクリーンリーダーは何も読み上げず、見える人にも、意味を知らなければ伝わりません。
スマートフォンでは新しいタブが画面全体に表示され、それまでのページは別のタブに隠れて見えなくなります。これは見落とされがちです。
10グループ中3グループに影響
- 全盲 (影響あり)
- 弱視 (影響あり)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響なし)
- 届く範囲・力 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 視覚を使わない スクリーンリーダーの利用者は「サイズガイドを見る、リンク」と聞いてたどり、サイズガイドが読み上げられます。タブが開いたことは何も伝わらないため、サイズを選ぼうと「戻る」を押しても何も起きず、シャツのページは消えたように思えます。
- 視覚が限られる 画面拡大ソフトの利用者が見ているのはリンクで、画面上端のタブの並びではないため、新しいタブが開いたことが見えません。サイズガイドを読み終えると、「戻る」が灰色になっています。
- 言語・認知・学習の能力が限られる 今どこにいるかを把握するのが難しい人は、シャツのページを2度見失います。1度目は画面が別のページに置き換わったとき、2度目は、いつも戻るときに使う「戻る」が、多くのブラウザーで何も起こさないときです。検索からやり直す人や、諦めてしまう人もいます。
リンクには分かりやすい名前があるため、axeなどの自動チェックは合格にします。どのルールも target を見ていません。EaseWebの診断は、_self、_parent、_top 以外の target を持つリンクや、onclick 属性で window.open() を呼ぶリンクのうち、名前にも説明にも新しいタブやウィンドウを知らせる言葉がないものを、確認の依頼として挙げます。3.2.5はレベルAAAで、新しいタブが必要か、その言葉が知らせになっているかは、人にしか判断できないからです。上の最後の例のように、スクリプトから登録したクリックのハンドラーはマークアップにないため、診断では見つけられません。AIのコードアシスタントに外部へのリンクを頼むと、習慣のように target="_blank" と rel="noopener noreferrer" を付け、言葉のないアイコンを添えることがあります。アクセシブルにしてと頼むと、そのアイコンに aria-hidden="true" を付けることもあり、そうなるとスクリーンリーダーの利用者には何も伝わりません。
試してみる
Tabキーでサイズガイドのリンクへ移動してたどり、ブラウザーの「戻る」でシャツのページへ戻ってみてください。
ウィンドウの下の欄に、スクリーンリーダーの読み上げが出ます。新しいタブが開くことを前もって知らされましたか?「戻る」でシャツのページに戻れますか?
問題あり 修正できますか?
スクリーンリーダーの読み上げ:
(Tabでリンクへ移動)
修正方法
リンクは同じタブで開くか、新しいタブで開くことをリンクの言葉で伝えます。
- 1同じタブで開くと失われるものがない限り、リンクは同じタブで開く。
- 2新しいタブで開くリンクでは、そのことを言葉で伝え、名前のないアイコンだけに任せない。
- 3知らせる言葉は title ではなくリンクの名前に入れ、見えている言葉の後に置く。
伝えずに新しいタブで開くリンク
<p> Not sure which size to choose? <a href="/size-guide" target="_blank">See the size guide</a></p>ガイドを同じタブで開く
<p> Not sure which size to choose? <a href="/size-guide">See the size guide</a></p>この方法を選ぶ理由:リンクは同じタブで開く
target="_blank" で、ブラウザーはガイドを新しいタブに開きます。リンクの名前は「See the size guide」で、どこに開くかは何も伝えません。利用者が新しいタブに気づくのは、開いた後です。気づかないこともあります。
target がなければ、ガイドは同じタブで開き、「戻る」でシャツのページに元のまま戻れます。ガイドをシャツの横に並べたい人は、中クリック、CtrlキーかCommandキーを押しながらのクリック、コンテキストメニュー、スマートフォンでの長押しで、自分で新しいタブに開けます。リンクをたどって求めたこと以外は何も変わらないので、知らせる必要もありません。
3つとも3.2.5を満たします。ガイドは同じタブで開いてください。どのブラウザーでも「戻る」が使えたままになるのはこの方法だけで、言葉もいらず、新しいタブがほしい人は自分で開けます。新しいタブは、入力途中のフォームの横で開くヘルプのように、それがないとページが何かを失う場合だけにし、その場合は知らせる言葉をリンクに入れて、誰にでも見えて聞こえるようにします。アイコンに名前を付けるのは、デザインにアイコンがあり、言葉を表示できない場合です。スクリーンリーダーの利用者には伝わりますが、アイコンを知らない人には推測を強いることになります。
新しいタブで開くリンクがいくつも並ぶ場合は、GOV.UKが勧めるように、「以下のリンクは新しいタブで開きます」のような一文をその前に置くと、リンクごとに言葉を繰り返さずに済みます。ただし、リンクからリンクへ移動するスクリーンリーダーの利用者はその一文を聞かないため、各リンクの名前にも、隠した文字で言葉を加えてください。
知らせる言葉を title 属性に入れないでください。ブラウザーはマウスを載せたときのツールチップとして表示し、ほとんどはキーボードやタッチ操作では何も表示しません。スクリーンリーダーも確実には読みません。G201の例の1つのように aria-describedby だけで伝える方法は、スクリーンリーダーの利用者にしか届かず、説明を読み上げない設定のスクリーンリーダーもあります。達成方法H83は知らせる言葉をリンクのテキストに入れるため、誰にでも届きます。
上の例のように、見えている言葉を名前の先頭に置いたままにし、名前が利用者に見えるラベルで始まるようにします。表示と名前が食い違うボタンとリンクも参照してください。
新しいウィンドウを開く方法には、どれにも同じ知らせが必要です。target="help" のようにほかの名前の target も、window.open() を呼ぶスクリプトも同じです。ページを離れると入力した内容が失われるフォームでは、ヘルプを新しいタブで開くより、入力した内容を保持して、ヘルプを同じタブで開けるようにするほうがよい解決です。
AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。
修正の確認
4つの確認
確認方法: キーボード、スクリーンリーダー、ズーム、マウス
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。ページのリンクや、それを書き出すコンテンツ管理システムを変更した際は、再度確認します。
制限
このサンプルは、どのページでも同じ結果になることを保証するものではありません。対象は新しいタブを開くリンクです。PDFを開くリンクやファイルをダウンロードするリンクも、ファイルの種類と大きさでそのことを伝えるべきで、文書そのものもアクセシブルである必要があります。スクリーンリーダーで読めない、スキャンやタグなしのPDFを参照してください。リンクの言葉がリンク先を伝えているかは、別の問題です。名前のないバナーや画像のリンクを参照してください。ページを読み込んだときなど、リンクを押していないのに開くウィンドウは、別の形で同じ基準に適合しません。利用者が使うスクリーンリーダー、画面拡大ソフト、スマートフォンで確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。