我有一个网站,其中的模态框通过 React Portal 运行,它们运行良好,由一个流行的库提供支持。然而,在一个地方,由于各种合理的原因,我们有一个自定义模态框,它不在门户内,也不是由库支持的。
为了方便使用,我尝试将模态框本身设置为 role="modal" 和 aria-modal="true",以提示屏幕阅读器应忽略背景。但是,背景并没有被忽略。 此网站提到有时确实需要在背景上使用 aria-hidden。在检查 React Portal 和库如何执行此操作时,它会向正文添加 aria-hidden 属性。所以我想我会试一试。
但是,当我创建一个 useEffect 来执行此操作并调用时document.body.setAttribute('aria-hidden', 'true')
,它只是忽略了我。我知道代码可以工作,我可以设置其他属性,但不能设置这个属性。你们有人知道为什么会这样吗?
编辑:关于我为什么要这样做的澄清,这是来自的 HTML 树react-modal
,我们使用的我上面提到的库,每周下载量为 170 万次:
我很想知道他们为什么这么做,尤其是当模态框是被隐藏的主体的子项时。正如其中一条评论指出的那样,这违反了 Aria 指南,似乎不应该起作用,很奇怪,但实际上确实有效。