我想检测屏幕阅读器是否在用户的机器上运行,以避免声音与 html 中的音频标签发生冲突。如果是这样,请提供有关如何做到这一点的详细信息。
3 回答
即使您可以检测到屏幕阅读器正在运行,您也不应该尝试做任何特别的事情。即使您对一组屏幕阅读器用户正确,也可能对另一组用户错误。最好首先专注于编写好的干净的 HTML5。
请注意,并非所有屏幕阅读器用户都使用文本转语音;许多使用盲文输出。此外,其他类型的可访问性工具(例如内容荧光笔和语音输入应用程序)使用与屏幕阅读器相同的技术和 API(例如 DOM、MSAA),因此任何“检测屏幕阅读器”的技术也可能会检测到这些 - 所以您不能假设这意味着用户完全失明并且只使用语音。
按照目前的情况,音频标签目前还不是普遍可访问的,不同的浏览器具有不同级别的可访问性支持 - 请参阅HTML5 可访问性并向下滚动到音频以获取有关当前支持的更多详细信息。我已经看到一些页面在音频标签之后添加了基于 HTML5 的控件和 javascript,因此它们可以提供自己的 UI 以确保键盘或屏幕阅读器用户可以根据需要播放/停止音频。(最终,当浏览器赶上来时,这应该是不需要的。)
就一般可访问性而言,WCAG 2.0(Web 内容可访问性指南)建议任何自动播放超过 3 秒的音频都应具有可访问的方法来暂停或停止音频。(我会更进一步,建议不要使用任何自动音频 - 使用选项卡式浏览时,通常无法确定音频来自哪个选项卡。)
虽然可能不是一种完全可靠的方法,但当用户浏览内容时,可以使用焦点事件通过 javascript 检测屏幕阅读器的进度。
一个隐藏的“跳过导航链接”(http://webaim.org/techniques/skipnav/)如果它被聚焦,将是检测某人是否正在使用屏幕阅读器的一种方法。
尽管它没有解决问题的音频部分,但我只是想提供这个部分解决方案,因为我正在寻找可能的方法来自己检测屏幕阅读器。
您无法使用 javascript 检测屏幕阅读器,也无法使用任何客户端技术检测屏幕阅读器。您可以使用 Flash检测运行MSAA客户端的软件。有关它的工作原理以及为什么它没有用且不应用于检测屏幕阅读器的更多详细信息,请参见此处:开发人员注意:使用 Flash 检测屏幕阅读器