防止屏幕阅读器/辅助技术触发点击处理程序
Prevent screen-readers / assistive tech from triggering click handler
我有这个link:
<a href="/path/to/page" data-trigger="expedient-element">The Best Page</a>
当前页面中存在 ajax 填充和显示的元素是 "enhancement" 并且具有 aria-hidden="true"
。屏幕阅读器和辅助技术最好跟随 link 的 href 到后续的静态页面,而不是触发点击处理程序(特别是因为它将作用的元素已经隐藏,如前所述提到)。
这种行为是否已经发生或我需要添加一些东西?
在 link 上按 Enter 时,它的作用与单击相同,拦截 Enter 键以执行不同的操作是一个非常糟糕的主意。
- 有些视力正常的键盘用户不使用屏幕 reader。这些用户将遇到意外行为。
- 屏幕 readers 可能会选择直接发送点击事件,而不是键盘事件,即使确实按下了回车键。所以反方向同上。
- 除了单击或输入之外,可能还有其他激活 link 的方法:空格键、点击触摸屏、辅助技术通过眨眼来单击等。在这些情况下它应该如何表现?
顺便说一句,你不能根据是否使用屏幕 reader 来做一些不同的事情,因为你没有 100% 可靠的方法来检测它。
您应该问自己的问题是:
- 为什么您想要点击和输入之间的不同行为?或者在屏幕 reader 和普通用户之间 ?
- 您是否正在尝试解决无法访问的内容,或者您是否有相同内容的两个版本(一个可访问的和一个不可访问的)?在那种情况下,拥有单一内容并使其易于访问会好得多。真正不可能的情况很少见,经验表明这两个版本最终会不同步,比你想象的要快。
我有这个link:
<a href="/path/to/page" data-trigger="expedient-element">The Best Page</a>
当前页面中存在 ajax 填充和显示的元素是 "enhancement" 并且具有 aria-hidden="true"
。屏幕阅读器和辅助技术最好跟随 link 的 href 到后续的静态页面,而不是触发点击处理程序(特别是因为它将作用的元素已经隐藏,如前所述提到)。
这种行为是否已经发生或我需要添加一些东西?
在 link 上按 Enter 时,它的作用与单击相同,拦截 Enter 键以执行不同的操作是一个非常糟糕的主意。
- 有些视力正常的键盘用户不使用屏幕 reader。这些用户将遇到意外行为。
- 屏幕 readers 可能会选择直接发送点击事件,而不是键盘事件,即使确实按下了回车键。所以反方向同上。
- 除了单击或输入之外,可能还有其他激活 link 的方法:空格键、点击触摸屏、辅助技术通过眨眼来单击等。在这些情况下它应该如何表现?
顺便说一句,你不能根据是否使用屏幕 reader 来做一些不同的事情,因为你没有 100% 可靠的方法来检测它。
您应该问自己的问题是:
- 为什么您想要点击和输入之间的不同行为?或者在屏幕 reader 和普通用户之间 ?
- 您是否正在尝试解决无法访问的内容,或者您是否有相同内容的两个版本(一个可访问的和一个不可访问的)?在那种情况下,拥有单一内容并使其易于访问会好得多。真正不可能的情况很少见,经验表明这两个版本最终会不同步,比你想象的要快。