公告结束后,切换咏叹调?

时间:2018-05-28 16:30:28

标签: javascript frontend accessibility wai-aria accessible

我目前正在开发一个交互式pdf阅读器项目,以使其更易于访问。我创建了一个<p>元素,它在屏幕上不可见,并赋予它aria-live属性。每当我想宣布一些东西时,比如打开抽屉,我就会设置<p>元素的文本。 但是,如果用户希望整个页面都是公告,其中语音的密钥为VO + a,则还会读取<p>元素,但我希望防止这种情况发生。

有人可以建议这是否是宣布更改的正确方法?如果是,那么如果用户想要读取整个页面,我怎么能阻止读取<p>元素?我目前正在使用<p>元素来宣布是否打开/关闭抽屉,或者是否更改了字体/页码等。

2 个答案:

答案 0 :(得分:1)

您无法阻止读取整个页面的屏幕阅读器读取aria-live元素。 您可以在屏幕上以可视方式隐藏它,但不能将其隐藏在屏幕阅读器的虚拟缓冲区或内部表示中,以使其无法访问和读取。

要隐藏屏幕中的元素,请查看流行框架中存在的CSS类,如.visually-hidden,.sr_only等。 这是一种向屏幕阅读器用户显示内容的常用方法,同时将其隐藏给普通屏幕用户。

要隐藏屏幕阅读器表示中的元素(但不一定是屏幕),您可以使用aria-hidden。但是咏叹调的生活也开始变得无用了。

您也可以考虑使用display:none或visibility:hidden来隐藏scren阅读器和可视屏幕中的元素。其他类似的技巧如字体:0,宽度/高度:0,不透明度:0,剪辑:0等具有相同的问题,并且它们不一定有效地隐藏元素到处。但是,在这种情况下,行为不是。根据所使用的确切技巧,ARia-live将在一些屏幕阅读器和浏览器组合中保持正常操作,而它将停止与其他人合作,最着名的是Safari Mac和iOS上的VoiceOver。

一个小技巧包括从DOM中删除元素,或者在显示或设置后将其变为空白,以便通过页面的scren阅读器在之后找不到它。 但是,你也必须小心这一点。在某些情况下,我已经观察到,如果元素被过早删除(同时仍在发布公告),它会使屏幕阅读器立即切断公告。 而且,当然,您无法知道屏幕阅读器是否已经完成阅读消息,是否正在阅读它,或者它是否尚未阅读。如果你这样做,请花点时间让元素可见5,10秒或更长时间,以确保完整阅读信息。

因此,总而言之,你没有真正的好方法来保持你的咏叹调生活元素的工作,同时防止屏幕阅读器通过页面阅读的正常方式来达到它。

答案 1 :(得分:0)

由于@quentinc已经解释了视觉隐藏元素与屏幕阅读器隐藏元素之间的差异,因此您无法为屏幕阅读器提供一个元素,但可以防止它出现在阅读全部内容中。命令。

在许多情况下使用aria-live非常方便,但如果没有关于您具体情况的更多详细信息,则很难提出其他建议。但是,既然你提到了&#34;抽屉打开&#34;,对我来说听起来像是可以扩展/崩溃的东西。如果是,那么您应该查看aria-expanded。您可以将该属性的值从false更改为true,以向屏幕阅读器指示某些内容已展开。抽屉开口将被视为扩展。屏幕阅读器将负责宣布更改,因此您不需要aria-live