我正在做一个网站项目并修复可访问性缺陷。
我的设置限制:
- 操作系统是视窗 7/10 浏览器
- 是IE浏览器11
- 辅助功能软件是 JAWS 2018.1804.26
我无法控制这些限制,因此请不要为任何其他设置提出任何解决方案。
我有一个缺陷,说 HTML<select>
(下拉列表)应该列在 JAWS 的"可点击"元素中。(这是按Ins+Ctrl+/键盘和弦时显示的模式对话框。我以前在其他HTML元素类型中遇到过此类问题,并且我已经通过以下组合解决了这些问题:
- 添加一个
onclick
处理程序(在我的例子中,是一个空函数) - 向
aria-label
属性添加一个值(在我的情况下,动态)
尝试在当前缺陷中执行这些步骤时,我可以使<select>
显示在"可单击"模式对话框中,但没有列出任何文本(我猜它正在"报告"一个空字符串)。尽管这aria-label
有价值。
其他注意事项:
- 有问题的
<select>
位于<td>
1内的<span>
内
它看起来像这样:
<table>
<tbody>
<tr>
<td>
<span>
<select> ... options ... </select>
<span>
</td>
</tr>
</tbody>
</table>
我尝试像这样更改上面的代码:
<table>
<tbody>
<tr>
<td>
<span>
<select onclick="emptyHandler" aria-label="Some text">
... options ... </select>
<span>
</td>
</tr>
</tbody>
</table>
function emptyHandler() {
/* This function is empty by design */
/* Its function is to expose an element */
/* as a clickable element to JAWS, when */
/* otherwise JAWS would ignore it. */
}
进行上述修改确实会将元素添加到可单击元素列表中,但不显示任何文本。您可以看到额外的行,并且可以突出显示它,但它只是一些空格/文本(或者可能只是什么都没有)。
1我没有为此页面编写 UI,我不希望(也无权)重写整个页面。我怀疑在与 JAWS 交互时将控件包装在元素中会做一些非常不稳定的事情,但我无法解决这个问题的那部分。
我对此有几个问题,因为我找不到关于它应该如何工作的出色文档:
- 是否有任何关于这应该如何工作的详细文档?我在Freedom Scientific的网站以及Mozilla和网络上的搜索产生了一些信息,但我希望有一个中心的地方可以找到这些答案。特别是,对于"可点击"元素是什么,似乎没有一个一致的规范定义。某些元素似乎被视为"可单击"是默认值,而添加自定义
onclick
处理程序似乎允许将任何元素添加到该列表中。这导致我... - "可点击"模式对话框在 JAWS 中究竟是如何工作的?我想我已经想出了如何将元素放入此列表,但它显示的内容似乎有点不一致。这导致我...
- 该模式对话框中应该显示什么?在之前的测试中,显示的文本似乎是
aria-label
属性中的值,那么为什么在这里不起作用呢? <select>
元素会出现在这里是不恰当的期望吗?出于这个原因,我总是可以把这个缺陷踢回来,但我不想这样做,除非我确定这是正确的行动方案。
随着细节的添加,我现在明白了这个问题。 JAWS 中的"可单击"对话框 (ins+ctrl+/) 显示具有onClick()
处理程序的元素,但用于该对话框中<select>
元素的标签是选择的值,即当前选择的任何<option>
。 使用aria-label
、aria-labelledby
或<label for="select-id">
不会影响可单击的对话框,尽管在<button>
上使用这些属性确实可以在该对话框中使用。
我建议为 JAWS 提交一个错误。
好消息是,用于导航到下一个<select>
元素的 JAWS 快捷键是C,用于显示所有<select>
元素的对话框是ins+ctrl+C,并且该对话框确实遵循aria-label
或aria-labelledby'
或<label for="select-id">
。
这不是一个错误。对于 JAWS 用户来说,<select>
绝不是可点击的元素。此击键带来了可单击但无法识别为其他内容的元素列表:链接、按钮、组合框。
因此,将缺陷标记为"非错误",并告诉用户改用Insert+Ctrl+C。
像JAWS这样的屏幕阅读器总是试图尽可能精细地识别HTML元素,所以"一个可点击的东西"实际上对盲人用户没有多大帮助。与组合框不同。