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