是否可以使用javascript来检测用户计算机上是否正在运行屏幕阅读器?

shu*_*ndu 24 html javascript accessibility screen-readers

我想检测屏幕阅读器是否在用户的机器上运行,以避免与html中的音频标签发生声音冲突.如果是,请提供有关如何完成此操作的详细信息.

Bre*_*McK 12

即使您检测到屏幕阅读器正在运行,您也不应该尝试做任何特殊的事情.即使您为一组屏幕阅读器用户提供了正确的选择,您也可能会为另一组人员弄错.最好是首先专注于编写好的干净HTML5.

请注意,并非所有屏幕阅读器用户都使用文字转语音; 许多人使用盲文输出.此外,其他类型的辅助工具 - 例如内容荧光笔和语音输入应用程序 - 使用与屏幕阅读器相同的技术和API(例如,DOM,MSAA),因此任何"检测屏幕阅读器"的技术也可能会检测到这些 - 所以你不能认为这意味着用户完全失明并只使用语音.

目前的情况是,音频标签目前不是普遍可访问的,不同的浏览器具有不同级别的可访问性支持 - 请参阅HTML5辅助功能并向下滚动到音频以获取当前支持的更多详细信息.我已经看到一些页面在音频标签之后添加了基于HTML5的控件和javascript,因此他们可以提供自己的UI,以确保键盘或屏幕阅读器用户可以根据需要播放/停止音频.(最终,当浏览器赶上时,不需要这样做.)

就一般可访问性而言,WCAG 2.0(Web内容可访问性指南)建议任何自动播放超过3秒的音频应具有暂停或停止音频的可访问方式.(我会更进一步,建议不要使用任何自动音频 - 当使用标签式浏览时,通常无法确定音频来自哪个标签.)

  • 我不是拒绝投票的人,但是我可以想到的一个例子是,如果您正在编写一个框架,该框架提供一些基本控件,例如带有附加选择器的日期输入。对于移动平台或屏幕阅读器,您可能希望使用input [type = date]。虽然很笨拙,但很难检测到手机。屏幕阅读器将覆盖该问题。 (2认同)
  • 我也不是反对者-就我而言,我有一个功能完善的本机选择下拉菜单,其效果与屏幕阅读器一样好。但是,当我使用selectric这样的插件“增强”它时,对于屏幕阅读器来说,它突然变得毫无用处。如果我知道有屏幕阅读器在玩,那么我永远都不会玩电子游戏,每个人都会更快乐。 (2认同)

hex*_*lys 5

虽然这可能不是完全可靠的方法,但当用户浏览内容时,可以使用焦点事件通过 JavaScript 检测屏幕阅读器的进度。

隐藏的“跳过导航链接”(http://webaim.org/techniques/skipnav/)如果有焦点,将是检测某人是否正在使用屏幕阅读器的一种方法。

即使它没有解决问题的音频部分。我只是想提供这个部分解决方案,因为我正在寻找自己检测屏幕阅读器的可能方法。

  • 对于使用键盘导航但不使用屏幕阅读器的人来说又如何呢? (3认同)