让 JAWS 在列值之前读取角色 columnheader every-time
Make JAWS read role columnheader every-time before the column value
希望你做得很好。因此,对于我最近的一个项目,我需要做一些与苹果为比较而构建的页面非常相似的事情
iPad 模型。 (https://www.apple.com/la/ipad/compare/) 网络需要可访问,不幸的是,这部分已经构建,但 a11y 并没有真正考虑在内,现在我们需要重构它。所以我浏览了苹果网站,发现他们的布局与我们的有点相似。此外,我使用 NVDA 进行了测试,我认为这就是我所需要的。每次,在读取列值之前,NVDA 都会读取设置为所选产品的列 header。这样,用户就可以知道什么产品具有该功能。然后我在 Jaws 上测试,发现它不是每次都读取值之前的 headers。这不好,因为用户无法知道具有正在阅读的功能的产品。是否需要激活配置才能使 NVDA 具有与 JAWS 相同的行为?大白鲨对客户很重要。
谢谢
首先你应该确保你使用的是 <th>
,也许 <thead>
是正确的。
根据 WebAIM's guide to testing with JAWS,reader 提供额外的快捷方式来阅读相关 headers。
To skip to a table, press the T key. To navigate between cells, hold down Ctrl + Alt and use ↑/↓/←/→ to move from cell to cell. Ctrl + Alt + 5 (on the numeric keypad) will read the row and/or column headers for the current cell.
此行为是产品设计者的决定,因此您不应尝试覆盖它。
我还建议让 reader 实际屏幕用户参与测试。
如果您使用的是原生 HTML,那么您的工作就容易多了。如果您使用
和 标签将 table 拼凑在一起,您需要做更多的工作,但可以完成。
所以对于一个简单的 table 就像在 Apple 网站上一样,你会有这样的东西:
<table>
<tr>
<th scope="col"></th>
<th scope="col">iPad Pro</th>
<th scope="col">iPad Air</th>
<th scope="col">iPad</th>
</tr>
<tr>
<th scope="row">Height</th>
<td>11.04 inches</td>
<td>9.8 inches</td>
<td>9.4 inches</td>
</tr>
<tr>
<th scope="row">Width</th>
<td>8.46 inches</td>
<td>6.8 inches</td>
<td>6.6 inches</td>
</tr>
...
</table>
请注意,您可以将
放在 中,将主要的 放在 中,但我保持简单。
使用本机 HTML,您的工作就完成了。 table 有 列和 header 行。当您使用屏幕 reader 浏览一行时,列 header 将在单元格值之前宣布。如果向下导航一列,行 header 将在单元格值之前宣布。
如果您不使用 table 元素而是使用
和 ,则必须为所有元素指定 roles
(并且CSS 以适当布置 table)。它会是这样的:
<div role="table">
<div role="row">
<div role="columnheader"></div>
<div role="columnheader">iPad Pro</div>
<div role="columnheader">iPad Air</div>
<div role="columnheader">iPad</div>
</div>
<div role="row">
<div role="rowheader">Height</div>
<div role="cell">11.04 inches</div>
<div role="cell">9.8 inches</div>
<div role="cell">9.4 inches</div>
</div>
<div role="row">
<div role="rowheader">Width</div>
<div role="cell">8.46 inches</div>
<div role="cell">6.8 inches</div>
<div role="cell">6.6 inches</div>
</div>
</div>
如果您使用屏幕 reader 的默认设置,则无需在屏幕 reader 中执行任何特殊操作即可听到行和列 header 的声音. JAWS、NVDA 和 VoiceOver 都应该尊重他们。
希望你做得很好。因此,对于我最近的一个项目,我需要做一些与苹果为比较而构建的页面非常相似的事情 iPad 模型。 (https://www.apple.com/la/ipad/compare/) 网络需要可访问,不幸的是,这部分已经构建,但 a11y 并没有真正考虑在内,现在我们需要重构它。所以我浏览了苹果网站,发现他们的布局与我们的有点相似。此外,我使用 NVDA 进行了测试,我认为这就是我所需要的。每次,在读取列值之前,NVDA 都会读取设置为所选产品的列 header。这样,用户就可以知道什么产品具有该功能。然后我在 Jaws 上测试,发现它不是每次都读取值之前的 headers。这不好,因为用户无法知道具有正在阅读的功能的产品。是否需要激活配置才能使 NVDA 具有与 JAWS 相同的行为?大白鲨对客户很重要。
谢谢
首先你应该确保你使用的是 <th>
,也许 <thead>
是正确的。
根据 WebAIM's guide to testing with JAWS,reader 提供额外的快捷方式来阅读相关 headers。
To skip to a table, press the T key. To navigate between cells, hold down Ctrl + Alt and use ↑/↓/←/→ to move from cell to cell. Ctrl + Alt + 5 (on the numeric keypad) will read the row and/or column headers for the current cell.
此行为是产品设计者的决定,因此您不应尝试覆盖它。
我还建议让 reader 实际屏幕用户参与测试。
如果您使用的是原生 HTML,那么您的工作就容易多了。如果您使用
所以对于一个简单的 table 就像在 Apple 网站上一样,你会有这样的东西:
<table>
<tr>
<th scope="col"></th>
<th scope="col">iPad Pro</th>
<th scope="col">iPad Air</th>
<th scope="col">iPad</th>
</tr>
<tr>
<th scope="row">Height</th>
<td>11.04 inches</td>
<td>9.8 inches</td>
<td>9.4 inches</td>
</tr>
<tr>
<th scope="row">Width</th>
<td>8.46 inches</td>
<td>6.8 inches</td>
<td>6.6 inches</td>
</tr>
...
</table>
请注意,您可以将
使用本机 HTML,您的工作就完成了。 table 有 列和 header 行。当您使用屏幕 reader 浏览一行时,列 header 将在单元格值之前宣布。如果向下导航一列,行 header 将在单元格值之前宣布。
如果您不使用 table 元素而是使用
roles
(并且CSS 以适当布置 table)。它会是这样的:
<div role="table">
<div role="row">
<div role="columnheader"></div>
<div role="columnheader">iPad Pro</div>
<div role="columnheader">iPad Air</div>
<div role="columnheader">iPad</div>
</div>
<div role="row">
<div role="rowheader">Height</div>
<div role="cell">11.04 inches</div>
<div role="cell">9.8 inches</div>
<div role="cell">9.4 inches</div>
</div>
<div role="row">
<div role="rowheader">Width</div>
<div role="cell">8.46 inches</div>
<div role="cell">6.8 inches</div>
<div role="cell">6.6 inches</div>
</div>
</div>
如果您使用屏幕 reader 的默认设置,则无需在屏幕 reader 中执行任何特殊操作即可听到行和列 header 的声音. JAWS、NVDA 和 VoiceOver 都应该尊重他们。