辅助功能:在页面加载时强制阅读跨度文本的方法是什么

Accessibility: what's the way to force reading of span text on page load

我很好奇当页面加载时,将屏幕阅读推送到先阅读 <span>read me on load</span>(它位于 html 页面的中间)的正确方法是什么? 甚至

role="rude"

出于某种原因没有帮助。

谢谢。

您使用的不是 ARIA live regions 的一部分。您想要 role=alertaria-live=assertive(尽管在早期草稿中 "assertive" 最初是 "rude")。

话虽如此,实时区域旨在用于已加载的页面。如果您正在制作对话,那么您的 HTML 可能如下所示:

<div role="alert" aria-live="assertive">
Anything in here will be announced as soon as it changes.
</div>

如果您希望在页面加载时显示对话框,请考虑隐藏其内容,然后在页面加载完成后使用脚本显示其内容。

如果您需要在页面加载后立即通知它并且它不是对话框,请考虑使用脚本在页面加载时将焦点移动到该元素。通过放置焦点,浏览器将宣布它是什么。

然而,要使其起作用,您不能只将焦点放在 <span> 上,因为它没有 interactive content. You can make it interactive by adding a tabindex attribute. If you do that, then you will need to add a role 描述元素的作用(如果您是,可以使用 role=region卡住),这样屏幕 reader 可以宣布它是什么,而不是让用户认为她已经登陆了一个控件,或者以其他方式期望能够采取行动。

如果您将焦点转移到没有屏幕 readers 的用户的元素,或者如果页面在页面加载时显示的第一件事是某种警告,那么这应该没问题。

但是,由于您没有提供上下文和示例,并且给出了比什么都不做更糟糕的所有方法,请问问自己:

是你要公布的东西……

  1. …警报或对话框?
  2. …已经可以接收键盘焦点的控件?
  3. …所有用户都会获得关注,而不仅仅是屏幕 readers 的用户?

如果你最后两次说 那么你不应该这样做。

如果您可以提供一个示例 URL 来说明您想做什么,那么我很乐意帮助您实现它。否则,我担心您编写的代码可能最终会为屏幕 reader 用户制造陷阱或障碍。