如何让 Mac 上的 VoiceOver 读取aria-label
(或其他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 和输入,然后为搜索结果,像这样。
<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 读取用户进入搜索结果区域?