aria-label
Mac で VoiceOver が(または別のaria-
属性) と競合せずに読み取れるようにするにはどうすればよいtabindex
ですか?
このような構造の検索結果ページにアクセシビリティを提供しようとしています
<div class="header">
<input value="" name="search" type="search"/>
</div>
<div class="main">
<div class="adv-block">
<a href="#">Link to adv 1</a>
<a href="#">Link to adv 2</a>
</div>
<div class="search-result">
<a href="#">Search result 1</a>
<a href="#">Search result 2</a>
</div>
</div>
まず、ユーザーにタブ ナビゲーション スキップ広告を表示してもらいたいので、次のように tabindex と input を提供し、次に検索結果を提供します。
<div class="header">
<input value="" name="search" tabindex="1" type="search"/>
</div>
<div class="main">
<div class="adv-block">
<a href="#">Link to adv 1</a>
<a href="#">Link to adv 2</a>
</div>
<div class="search-result">
<a href="#" tabindex="2">Search result 1</a>
<a href="#" tabindex="3">Search result 2</a>
</div>
</div>
しかし、その後、画面読み上げプログラム (私の場合は Mac の VoiceOver) がゾーンを正しく読み取るのを手伝いたいと思います。そのため、検索結果のコンテナに役割と説明を付けます。
<div class="header">
<input value="" name="search" tabindex="1" type="search"/>
</div>
<div class="main" role="main" aria-label="Search results">
<div class="adv-block">
<a href="#">Link to adv 1</a>
<a href="#">Link to adv 2</a>
</div>
<div class="search-result">
<a href="#" tabindex="2">Search result 1</a>
<a href="#" tabindex="3">Search result 2</a>
</div>
</div>
問題は、VoiceOver もに従ってナビゲートtabindex
し、入力から最初のリンクに直接移動することです。
tablindex
コンテナに属性を追加してカンニングしてみた
<div class="header">
<input value="" name="search" tabindex="1" type="search"/>
</div>
<div class="main" role="main" aria-label="Search results" tabindex="2">
<div class="adv-block">
<a href="#">Link to adv 1</a>
<a href="#">Link to adv 2</a>
</div>
<div class="search-result">
<a href="#" tabindex="3">Search result 1</a>
<a href="#" tabindex="4">Search result 2</a>
</div>
</div>
ただし、このケースは通常のタブ ナビゲーションでは異なります。
では、ユーザーが検索結果ゾーンに進んだことを VoiceOver に読み取らせる方法はありますか?