最近我一直在进行无障碍测试,特别是ARIA方面的测试。每当我在Apple Voiceover(OS X 10.9.2)上测试时,行为似乎不符合规范,有时甚至是不确定的。即使对于像role="button"
这样的基本功能也是如此。但是,我认识到很有可能是我的使用方法有误。(对于这个问题,假设标记本身是正确的,并且在其他屏幕阅读器中完全有效。)那么,根据您的经验,我是否正确认为Voiceover存在缺陷,并且不适用于测试ARIA增强的网页?还是说我只需要更好地了解它?
最近我一直在进行无障碍测试,特别是ARIA方面的测试。每当我在Apple Voiceover(OS X 10.9.2)上测试时,行为似乎不符合规范,有时甚至是不确定的。即使对于像role="button"
这样的基本功能也是如此。但是,我认识到很有可能是我的使用方法有误。(对于这个问题,假设标记本身是正确的,并且在其他屏幕阅读器中完全有效。)那么,根据您的经验,我是否正确认为Voiceover存在缺陷,并且不适用于测试ARIA增强的网页?还是说我只需要更好地了解它?
目前来说,使用Safari可以获得与Voiceover最佳的效果。我的问题之一是我在其他浏览器中进行测试。某些或者所有其他浏览器可能会与Voiceover交互异常。也许随着时间的推移,这种情况会得到改善。
Voiceover的用户界面可能不直观。本质上,它并不特别易于发现。这个文档对我非常有帮助。如果不了解键盘控件的微妙差别,你将无法走得太远。
你需要使用ctrl-option-shift-up和ctrl-option-shift-down键来“进入”和“退出”单个DOM节点。否则,在某些时候,你将无法与它们进行交互,并且在其他时候可能会卡在其中。
有时候事物会以奇怪的方式被宣布。例如,像<span role="button" aria-label="Delete">×</span>
这样的元素最初被宣布为“删除组”。如果你使用ctrl-option-shift-down进入按钮,它将宣布“1项与删除组交互时间可点击”。第一个消息不包括“可点击”,这让我感到惊讶。我认为第二条信息的信噪比很低。但现在我只是在挑毛病。role="button"
可能不会像我希望或期望的那样运行,但至少它没有被忽略。许多其他ARIA属性也是如此。
role=button
而不是aria-role=button
。而且aria-label
在屏幕阅读器中也很不一致,OS X只需在标签字符串前加上即可。为了获得最佳结果,在<span role=button>
中使用以下内容:<span aria-hidden=true>x</span>
并添加一个<span class=visually-hidden>Delete</span>
,然后用CSS隐藏.visually-hidden
此外,考虑使用<button type=button
而不是<span role=button
,这样您就不必为回车键和空格键添加JS
处理程序。 - Daniel Göransson