如何防止Windows叙述者读取隐藏的HTML标记?

如何防止Windows叙述者读取隐藏的HTML标记?,html,accessibility,wai-aria,narrator,Html,Accessibility,Wai Aria,Narrator,我有一个HTML页面,有多个隐藏元素,只有在特定情况下才可见 当我在页面包装器上设置焦点(读取所有内容)时,Windows叙述者读取所有元素,甚至是隐藏的元素 我尝试过使用aria hidden=“true”、CSS display:none、HTML5 hidden属性,所有这些都被完全忽略。到目前为止,我发现唯一有效的机制是在包装器上设置焦点之前,从DOM中删除这些元素。但这不是一个理想的解决方案。将role=“presentation”tabindex=“-1”应用到已应用aria hid

我有一个HTML页面,有多个隐藏元素,只有在特定情况下才可见

当我在页面包装器上设置焦点(读取所有内容)时,Windows叙述者读取所有元素,甚至是隐藏的元素


我尝试过使用aria hidden=“true”、CSS display:none、HTML5 hidden属性,所有这些都被完全忽略。到目前为止,我发现唯一有效的机制是在包装器上设置焦点之前,从DOM中删除这些元素。但这不是一个理想的解决方案。

role=“presentation”tabindex=“-1”
应用到已应用
aria hidden
的元素。

只是用同样的方法进行斗争,并发现如果有一个元素具有
role=“main”
而没有明确的
aria标签
/
aria标签
定义,它的全部内容,包括所有隐藏的元素,被添加到MSAA和UIA树中,然后由叙述者读出。添加一个显式的aria属性解决了这个问题,但显然也阻止了叙述者开始自动阅读主要内容


好的方面是,我们对这些问题提出了警告。显然,最好还是听从它的建议,尽管自动阅读内容会很好。

显然,在微软Edge上,这不再是一个问题了!万岁!如果元素是用CSS显示隐藏的:无,则它不会读取其内容。

这并不理想,但我相信这是唯一的选择。删除“讲述人”,这应该是你最后的选择,就像试图让HTML5与IE7协同工作一样-你会有一段不愉快的时光。抓取一份NVDA(它是免费的),看看会发生什么。如果代码有效,则这不是问题。如果NVDA堵塞了,我们需要使用适用的代码。它需要在叙述者上工作,而不是在这种情况下的选项:Swho说?“讲述人”唯一被认为是可接受的工具的时间是当您处于一个被锁定的环境中时,如一个图书馆。MS自己的文档甚至说明了这一点!图书馆和其他资源不能再争论金钱方面的问题了,sinc NVDA 1-是免费的,2-提供与JAWS相当的访问权限。所以,我想说,客户教育比实施更重要。唯一的另一件事是创建一个纯文本视图,即使添加这两个属性,它仍然可以读取。你可以检查下面的测试,只需点击内容就可以获得焦点:我认为你的问题恰恰相反。对不起,我没有把我的观点讲清楚。我面临的问题是,即使我应用了aria hidden和role=“presentation”,只要包装器聚焦,叙述者也会阅读我不想让它阅读的内容。因此,如果向该隐藏元素添加显式的
aria label=“foo”
,它能解决问题吗?