我正在研究一个网站项目并修复可访问性缺陷。
我无法控制这些限制,因此请不要为其他设置提出任何解决方案。
我有一个缺陷,那就是JAWS应该在“ clickable”元素中列出HTML <select>
(下拉列表)。 (这是按下 Ins + Ctrl + / 键盘和弦时显示的模式对话框。) HTML元素类型,并且我通过以下内容的组合进行了修复:
onclick
处理程序(在我的情况下为空函数)aria-label
属性添加一个值(在我的情况下是动态添加)当尝试在当前缺陷中执行这些步骤时,我可以使<select>
出现在“可单击”模式对话框中,但是未列出任何文本(我猜这是“报告”一个空字符串) )。尽管具有aria-label
的值。
<select>
在<span>
内部的<td>
内部 1 它看起来像这样:
<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. */
}
进行上述修改 DID 将元素添加到可点击元素列表中,但不显示任何文本。您可以看到多余的行,也可以突出显示它,但这只是空白/文本(或者可能什么也没有)。
1 我没有为此页面编写UI,并且我也不想(也没有获得授权)重新编写整个页面。我怀疑在与JAWS交互时,将控件包装在元素内部确实会产生一些不可思议的事情,但是我无法解决此问题的那部分。 >
我对此有一些疑问,因为我找不到很好的文档来证明它应该如何工作:
onclick
处理程序似乎允许将 ANY 元素添加到该列表中。这导致我... aria-label
属性中的值,那么为什么在这里不起作用?<select>
元素是否不合适?出于这个原因,我总是可以解决这个问题,但是除非我确定这是正确的做法,否则我不希望这样做。答案 0 :(得分:2)
通过添加的详细信息,我现在可以理解问题了。 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'
或{{1 }}。
答案 1 :(得分:1)
这不是错误。对于JAWS用户,<select>
绝对不是可单击的元素。此击键带来了可单击但不能识别为其他元素的列表:链接,按钮,组合框。
因此,将您的缺陷标记为“不是bug”,并告诉您的用户使用插入 + Ctrl + C 。
诸如JAWS之类的屏幕阅读器总是试图尽其所能地识别HTML元素,因此“可点击的内容”实际上对盲人没有太大帮助。与组合框不同。