window.confirm() 可以访问吗?



window.confirmwindow.alertwindow.prompt这样的原生浏览器模式是可访问的,还是实现一些自定义的东西更好?

关于这方面的信息并不多,但我相信答案是肯定的(在大多数情况下)。似乎以前的屏幕阅读器不支持警报/窗口对话框,但屏幕阅读器在当今世界已经支持这些对话框。

"虽然可访问性专家曾经不鼓励JavaScript弹出警报框,但现代屏幕阅读器和浏览器为基本的JavaScript警报框提供了出色的支持。

http://accessibility.psu.edu/scripts/alertboxes/#basic

https://www.w3.org/TR/2018/WD-wai-aria-practices-1.2-20180719/examples/dialog-modal/alertdialog.html

通读 w3 文档,似乎更可取的是自己制作并指定适当的aria属性

更新:阅读此答案的底部。 根据这个答案,大多数屏幕阅读器都可以访问它们,但 JAWS(截至 2017 年 12 月的这篇文章)拥有 46% 的市场份额。因此,46%使用屏幕阅读器的人使用不支持window.confirm的屏幕阅读器,因此最好使用相应的aria-*属性制作自定义对话框。



编辑:根据Travis J.的评论,github问题显示这是一个Chrome错误,已被修补。但是,如果您想保留对旧版 Chrome 的支持,那么您可以创建自定义对话框,或者如果您想添加 CSS、制作更多按钮等,只需创建自定义对话框。

我的测试给出了以下结果:

在Windows中,带有Firefox的JAWS和NVDA
  1. 都正确地宣布了window.confirm()对话框,但是Firefox允许在JAWS或NVDA打开或关闭时键盘导航泄漏出对话框。这是一个严重的可访问性缺陷。
  2. 在Windows中,带有Chrome的JAWS和NVDA都无法宣布window.confirm()对话框的文本内容,因此收听JAWS或NVDA的用户无法知道"确定"和"取消"按钮正在确认或取消什么。这是一个致命的可访问性缺陷。
  3. OS X 中带有 Safari 的 VoiceOver 会宣布"发件人"和 URL,但在 window.confirm() 对话框打开时不会宣布任何内容。如果用户随后使用键盘向前导航,VoiceOver 会播报"取消"和"确定"按钮,但从不朗读解释这些按钮的文本内容。这是一个致命的可访问性缺陷。Safari 浏览器还允许键盘导航在"旁白"打开或关闭时漏出对话框,这是一个严重的辅助功能缺陷。

最新更新