如何强制 mac 屏幕阅读器自动阅读 div 中的标题文本?

How to force mac screenreader to automatically read heading text in a div?

所以我有一个 SPA angular 1.5 应用程序,当用户导航到一个新页面时,有时该页面没有任何自动聚焦的输入,例如它只是一个祝贺页面说用户注册成功。通过

,我已经能够想出一个有点老套的解决方案

$('.registration-confirmation').attr("tabIndex", 0).focus();

所以屏幕阅读器会自动读出注册确认中的文本div,但我也不得不防止 css 中的蓝色轮廓脱离焦点

.registration-confirmation { &:重点 { 大纲:0; // 移除焦点上的 webkit 注入轮廓 } }

有更简单的方法吗?可能带有 aria 属性?

是的,别再那样做了 - 可访问性一点也不好,尤其是你现在弄乱了焦点指示器让我感到困惑。 ARIA 角色是处理此问题的正确方法:

  • 如果您尝试报告错误,这应该 ARIA role="alert",屏幕会立即通知 reader 并且是侵入性的,因此不应随意使用。
  • 对于成功报告或其他进展,您可以使用ARIA role="status";但是,仍然不要滥用它。例如,如果用户跳转到成功的注册屏幕并执行后续步骤,则将其应用于除简单 "congratulations" 以外的任何内容都是不合适的。

我建议查看 ARIA 最佳实践文档以了解各种示例用途。