JAWS 不会将 ul 和 li 元素作为列表读取
JAWS does not read ul and li elements as a list
NVDA 读取正确。 JAWS read only Link 1, Link 2(内容是Link 1, Link 2),但不读就是一个list
list-style-type: none;
html:
<ul role="list" class="content-links">
<sly data-sly-list.link="${model.links}">
<li role="listitem">
<a href="${link.href @ context='html'}" aria-label="${link.label}" rel="${link.rel}"
tms-dblclick="${link.tracking.tmsDblClick}" data-pid="${link.tracking.vadm.pin}" data-pid-action="${link.track.vadm.pinAction}">
${link.label}
</a>
</li>
</sly>
</ul>
您的代码是正确的(除了您指定的多余角色,正如@shannon 所指出的)。不幸的是,这就是 JAWS 的工作方式。当您 tab 到列表中包含的 link 时,会读取 link 文本并且 link 包含在列表中列表未阅读。但是,如果您在 JAWS 中使用 up/down 箭头键导航 DOM,当您导航至 link 时,您 将 听到 "list of 3 items" 在您听到 link 文本之前。当您向下箭头越过列表时,您会听到 "list end"。本机 JAWS 用户已经习惯了它(但这并不是正确的用户体验。)
link 文本本身应提供足够的信息,让用户了解单击 link 时会发生什么。如果相关,JAWS 用户可以发现 link 是列表的一部分。不要担心 JAWS 没有在用户浏览时提到它在列表中,因为这不是预期的行为。
NVDA 读取正确。 JAWS read only Link 1, Link 2(内容是Link 1, Link 2),但不读就是一个list
list-style-type: none;
html:
<ul role="list" class="content-links">
<sly data-sly-list.link="${model.links}">
<li role="listitem">
<a href="${link.href @ context='html'}" aria-label="${link.label}" rel="${link.rel}"
tms-dblclick="${link.tracking.tmsDblClick}" data-pid="${link.tracking.vadm.pin}" data-pid-action="${link.track.vadm.pinAction}">
${link.label}
</a>
</li>
</sly>
</ul>
您的代码是正确的(除了您指定的多余角色,正如@shannon 所指出的)。不幸的是,这就是 JAWS 的工作方式。当您 tab 到列表中包含的 link 时,会读取 link 文本并且 link 包含在列表中列表未阅读。但是,如果您在 JAWS 中使用 up/down 箭头键导航 DOM,当您导航至 link 时,您 将 听到 "list of 3 items" 在您听到 link 文本之前。当您向下箭头越过列表时,您会听到 "list end"。本机 JAWS 用户已经习惯了它(但这并不是正确的用户体验。)
link 文本本身应提供足够的信息,让用户了解单击 link 时会发生什么。如果相关,JAWS 用户可以发现 link 是列表的一部分。不要担心 JAWS 没有在用户浏览时提到它在列表中,因为这不是预期的行为。