我正在构建Angular应用程序,并且在IE 11中对Jaws的可访问性支持存在一些问题。
我的页面与此类似:
<div id="start-tabbing-from-here" aria-label="Press tab to begin" tabindex="-1"></div>
<h1 tabindex="0" aria-label="Some title">Some title</h1>
<p tabindex="0" aria-label="Some text">Some text</p>
<button tabindex="0" aria-label="Btn1">Btn1</button>
<button tabindex="0" aria-label="Btn2">Btn2</button>
<button tabindex="0" aria-label="Btn3">Btn3</button>
<button tabindex="0" aria-label="Btn4">Btn4</button>
当我确定页面元素已使用JQuery将“焦点”加载到#start-tabbing-from-here id上时。
其目的是,一旦用户开始制表,则用户将按页面顺序在元素之间移动。即:首先关注下一个“选项卡”上的“某些标题”,然后在大声朗读每个元素的内容时移至“某些文本”。
在Chrome(linux / windows / mac)和Mac上的Safari中,我得到了预期的行为。
在IE中确实发生了一些奇怪的事情: 在第一个选项卡上,它不仅开始阅读第一个元素,而且开始按页面顺序阅读所有元素。即JAWS将显示为: “某些标题有一些文本Btn1 ...”,然后突然从第一个元素开始“重置”,然后最后一次朗读。
本质上将发生以下情况: 用户标签一次,焦点移至“某些标题”。 JAWS然后大声读取: “某些标题一些文本Btn1 Btn2一些标题”,然后它将停止阅读,并且该页面将开始按我的预期运行。
在我看来,“重置”发生在固定的时间点或阅读了特定数量的单词之后。例如。如果我将元素的内容更改为:
<div tabindex="-1" id="start-tabbing-from-here">
<h1 tabindex="0" aria-label="Some title">Some title</h1>
<p tabindex="0" aria-label="Some longer text that is here">Some longer text that is here</p>
<button tabindex="0" aria-label="Btn1">Btn1</button>
<button tabindex="0" aria-label="Btn2">Btn2</button>
<button tabindex="0" aria-label="Btn3">Btn3</button>
<button tabindex="0" aria-label="Btn4">Btn4</button>
</div>
JAWS可能显示为:“某些标题一些较长的文本,即某些标题”。
我真的对此行为感到困惑,并且不太确定从哪里开始调试。我真的很希望能有一些投入! :)
答案 0 :(得分:0)
在页面加载时,JAWS倾向于从上到下阅读页面。如果在页面加载时将焦点移到特定元素,则JAWS可能会从该点开始读取页面。这是预期的行为,并且大多数用户将知道如何停止JAWS的阅读。 像示例中那样给所有内容一个tabindex是一个坏主意。这意味着所有键盘用户,无论他们是否使用屏幕阅读器,都必须通过许多静态元素进行制表才能进入要与之交互的链接,按钮或表单元素,这对于具有RSI或类似情况的用户可能会很痛苦。它还不利于盲人用户,因为JAWS和其他屏幕阅读器具有内置的阅读和导航键击,并且用户不倾向于依赖Tab键。 最好通过在页面顶部提供将焦点移至H1标题的跳过链接,使用户能够将焦点移至唯一内容的开头。如果它不适合您的设计,则可以将其隐藏,直到用户将其制表到该选项卡,然后使其可见。 如果您有充分的理由要移动焦点,请将其移至H1标题。