Javascript 如何告诉屏幕阅读器读取切换的元素

Javascript 如何告诉屏幕阅读器读取切换的元素,javascript,html,toggle,accessibility,wai-aria,Javascript,Html,Toggle,Accessibility,Wai Aria,我只使用aria hidden=“true”隐藏我的不同部分,而不是在DOM中添加/删除我的不同部分,并在单击某些切换时取消隐藏它们 原因是性能和更容易的noscript回退。DOM中的顺序不是问题出现的顺序 结果是一个二元问题树(是/否问题),用户在其中从一个问题单击到下一个问题 现在,有什么好的解决方案可以让屏幕阅读器阅读某个部分,或者至少在取消隐藏后继续阅读 有没有办法使用活动区域?屏幕阅读器是否阅读其中未隐藏的元素?我想,aria current可能合适吗?或者它更像是一个aria扩展的

我只使用
aria hidden=“true”
隐藏我的不同部分,而不是在DOM中添加/删除我的不同部分,并在单击某些
切换时取消隐藏它们

原因是性能和更容易的noscript回退。DOM中的顺序不是问题出现的顺序

结果是一个二元问题树(是/否问题),用户在其中从一个问题单击到下一个问题

现在,有什么好的解决方案可以让屏幕阅读器阅读某个部分,或者至少在取消隐藏后继续阅读

有没有办法使用
活动区域
?屏幕阅读器是否阅读其中未隐藏的元素?我想,
aria current
可能合适吗?或者它更像是一个
aria扩展的
应用程序

谢谢你的帮助

毫无疑问,我们是处理这类问题的正确方法

通过在HTML元素上使用
aria live
属性,当其中一个区域的内容发生更改时,辅助技术将收到警报。您对属性值的选择将指定宣布更改的速度(立即或在下一次机会)。最常见的实现通常是
aria live=“little”


本页概述了一些非常有用(和创新)的实现活动区域的技术:

为什么要首先删除它们?如果只是为了节省屏幕空间,您可能根本不应该对屏幕阅读器隐藏它们。@isherwood这是一个“是/否”问题树,其中一个答案引出下一个问题。因此,DOM中的大多数问题与树中的路径无关。正如最初的答案所示,这听起来根本不像是一个很好的活动区域应用程序,因为它具有交互性。您是否在视觉上隐藏树的未使用部分(例如,使用
可见性:关闭
显示:无
)?请描述如何直观地显示此问题,以及用户如何从一个问题导航到下一个问题。例如,回答的问题在继续之后是否消失了?如果没有,我能回到树上的一个较早的点,改变我的answe路线吗?如果我这样做,视觉上会发生什么?如果不知道这一点,就不能给出一个好的答案。一开始只有一个问题可见(
display:none
aria hidden=true
)。当您回答是或否时,相应的下一个问题如下所示。前面的问题仍然可见。在任何时间点,您都可以更改任何问题的答案,然后将隐藏以下所有问题,并显示相应的下一个问题(再次)。始终只有一个问题是有效的。但我在
aria live=“assertive”
上有它,当新元素未隐藏时,NVDA不会读取任何内容?你能提供一个我可以测试的代码示例吗?我刚刚想到了这一点!没有宣布更新,因为没有从DOM树中添加/删除任何内容。在这种情况下,当您将
aria hidden
更改为false时,最好将
role=“alert
添加到元素中,而不是使用活动区域。谢谢Josh,我会尝试一下,然后再与您联系。