我有一个 HTML 页面,其中包含多个仅在某些情况下才可见的隐藏元素。
当我将焦点设置在页面包装器上(以读取所有内容)时,Windows 讲述人会读取所有元素,甚至是隐藏的元素。
我尝试过使用 aria-hidden="true"、CSS display: none、HTML5 hidden 属性,所有这些都被完全忽略了。到目前为止,我发现唯一可行的机制是在将焦点设置在包装器上之前从 DOM 中删除这些元素。但这不是一个理想的解决方案。
我有一个 HTML 页面,其中包含多个仅在某些情况下才可见的隐藏元素。
当我将焦点设置在页面包装器上(以读取所有内容)时,Windows 讲述人会读取所有元素,甚至是隐藏的元素。
我尝试过使用 aria-hidden="true"、CSS display: none、HTML5 hidden 属性,所有这些都被完全忽略了。到目前为止,我发现唯一可行的机制是在将焦点设置在包装器上之前从 DOM 中删除这些元素。但这不是一个理想的解决方案。
适用role="presentation" tabindex="-1"
于您已aria-hidden
应用的元素。
刚用同样的东西打架,发现如果有一个role="main"
没有明确aria-label
/aria-labelledby
定义的元素,它的整个内容,包括所有隐藏的元素,都会被添加到 MSAA 和 UIA 树中,然后由讲述人读出。添加显式 aria 属性可以解决问题 - 但显然也会阻止讲述人自动开始阅读主要内容。
好消息是AccChecker 会警告这些问题。显然最好听从它的建议,即使自动阅读内容会很好。
显然这在 MS Edge 上不再是问题了!欢呼!如果元素被 CSS display:none 隐藏,那么它不会读取它的内容。