ボタンに対する追記がある場合のマークアップ
ウェブサイトでボタンを設置する際、そのボタンのラベルとは別に、ボタンのすぐ下などに、追記を配置することがあると思います。たとえば、フォームの送信ボタンにおいて、送信実行前に今一度ユーザーに確認してもらいたいことを念押ししたり、行動喚起 (Call To Action : CTA) ボタンにおいて、ユーザーの背中をもう一押ししたり、といったケースが考えられます。
このようなケースでは、「フォーム入力要素の注釈のマークアップ」でご紹介したテクニックと同様に、セマンティックに (マシンリーダブルな形で) ボタンと追記を紐づけるマークアップをしておくと、なおよいかなと思いました。たとえばスクリーンリーダーを使いながら [Tab] キ―でフォーカス位置を移動させている場合、ボタンにフォーカスが当たったときに、追記も併せて音声読み上げされる、といったことが期待できるからです。
ボタンと追記を紐づけるには、WAI-ARIA で規定されている「aria-describedby」を用いて、以下のように記述します。<button> 要素 (または <input type= "submit">) の aria-describedby 属性と、追記要素の id 属性が同じ値 (文字列) の場合、そのボタンと追記が一対の組として紐づけられます。
<button aria-describedby="note">早割を申し込む</button> <small id="note">おトクな早割の受け付けは、今月末までです!</small>
私の手元の環境で挙動を試したところ、以下のとおりでした。
- Windows NVDA + Firefox
- OK。<button>、<input type= "submit"> ともに、フォーカスが当たると、追記の内容も同時に読み上げられる。
- Windows NVDA + IE11
- OK。<button>、<input type= "submit"> ともに、フォーカスが当たると、追記の内容も同時に読み上げられる。
- Windows NVDA + Chrome
- OK。<button>、<input type= "submit"> ともに、フォーカスが当たると、追記の内容も同時に読み上げられる。
- OS X VoiceOver + Safari
- <button>、<input type= "submit"> ともに、フォーカス後しばらく時間が経ってからボタンの説明が読み上げられ、その後に「ヘルプタグ」という言葉に続いて追記の内容が読み上げられる。(恐らくユーザーはそこまで待てない。)
- OS X VoiceOver + Chrome
- <button>、<input type= "submit"> ともに、フォーカス後しばらく時間が経ってからボタンの説明が読み上げられ、その後に「ヘルプタグ」という言葉に続いて追記の内容が読み上げられる。(恐らくユーザーはそこまで待てない。)
- OS X VoiceOver + Firefox
- 問題あり。<button>、<input type= "submit"> ともに、ボタンのラベルが読み飛ばされて、追記の内容のみが読み上げられる。
- iOS VoiceOver + Safari
- OK。<button>、<input type= "submit"> ともに、フォーカスが当たると、追記の内容も同時に読み上げられる。
- iOS VoiceOver + Chrome
- OK。<button>、<input type= "submit"> ともに、フォーカスが当たると、追記の内容も同時に読み上げられる。
- Android Talkback + Chrome
- 問題あり。<button>、<input type= "submit"> ともに、ボタンのラベルが読み飛ばされて、追記の内容のみが読み上げられる。
- Android Talkback + Firefox
- <button> であれば OK。フォーカスが当たると、追記の内容も同時に読み上げられる。<input type= "submit"> の場合、フォーカスが当たっても、追記の内容は読みあげられない。
現時点では、上記のように挙動にバラツキが大きく、残念ながら実装はまだ時期尚早と言えるかもしれません。せめて、OS X VoiceOver + Firefox や Android Talkback + Chrome で見られる現象 (追記よりも重要な、ボタンのラベルが読み飛ばされてしまう) がなければ、よいのですが…。今後のユーザーエージェント側のアップデートに期待したいと思います。