2016-07-22 81 views
3

第5期装载机指标:我有我挣扎的可访问性问题。我有一个角度的Web应用程序。加载内容时显示页面加载微调器/指示器。并且当页面内容加载时,微调器被隐藏。这个“div”不会从DOM中删除。装载的div辅助功能:使用ARIA活

内容不读取(由NVDAor爪)被装载时的div。

<div class='loading' aria-live='polite' aria-label='Do not refresh the page' tabindex="-1">Do not refresh the page</div> 

我不希望改变应用程序的结构,但解决使用“咏叹调标签”来解决这个问题,只是想知道如果我会做任何事情更使唱腔,现场的工作?

更新(27/7/2016)

进一步澄清:我不去除DOM的内容,但使用CSS显示/隐藏内容(显示:无显示:块,反之亦然)

+0

我的角度排列很低,但你有一个网址分享?不想要改变结构意味着我不太可能能够帮助。 – aardrian

+0

@aardrian我的意思通过不想改变结构是询问建议的,可以指向一个解决方案我也许正确地使用唱腔,如果我没有做的是正确的,但是如果你有任何其他的话如果能解决我的问题,我会很感激的。 – vas

+1

你能澄清你的问题吗?您是否说屏幕阅读器不会朗读加载div内容(“不刷新页面”)?只有当它的内容CHANGES或显示更改(例如从display:none到display:block)时,Aria-live才会读出它的元素内容。 – Josh

回答

3

aria-live触发屏幕阅读器当与aria-live的元素)内与aria-live的元件(或文本被添加或从DOM移除。相比之下,当您取消隐藏隐藏元素时,元素和文本都不会从DOM中添加或删除,因此元素的aria-live属性不起作用。

为了让屏幕阅读器宣布“不要刷新页面”,这些选项应该做的伎俩:

  • 您可以创建<div class='loading' aria-live='polite'>元素,并从头开始它的文字内容,然后添加元素到DOM。
  • 或者你可以用空的<div class='loading' aria-live='polite'>元素开始,然后填充其文本内容。

其它一些信息:

  • 只要元素中的文本是要朗读什么,你可以省略元素的aria-label='Do not refresh the page'属性。
  • 为了锦上添花,不能伤害到include a role attribute on the div that has aria-live。如果您不确定要使用哪个角色,请使用role="status" - 这是一个非常安全的选择。
  • 当或者如果页面是在一个状态,你不再需要显示“不要刷新页面”,一定要扭转上述步骤。(也就是说,如果你的第一个选项去了,你加入整个元素从DOM中移除,或者如果你使用第二个选项并且填充了元素的文本内容,请清除元素的文本内容。)
+0

感谢@ashley为我清理aira-live。我认为我的问题基本上是我期待着aria live能够在show/hide上工作,这当然是行不通的。我还必须添加与咏叹调有关的(增加,删除,全部)以及咏叹调直播,以便用于我的用例。 – vas

+0

@vas:我很高兴听到这个解决方案! –