辅助功能:在页面加载时强制读取范围文本的方法是什么

Har*_*iec 4 html dom accessibility wai-aria

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

role="rude"
Run Code Online (Sandbox Code Playgroud)

由于某种原因没有帮助.

谢谢.

aar*_*ian 9

您使用的不是ARIA直播区域的一部分.你想要role=alert或者aria-live=assertive(虽然在早期的选秀中"断言"最初是"粗鲁的").

现在,就是说,实时区域旨在用于已经加载的页面.如果您正在进行对话,那么您的HTML可能如下所示:

<div role="alert" aria-live="assertive">
Anything in here will be announced as soon as it changes.
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

但是,要实现这一点,您不能只关注a,<span>因为它不是交互式内容.您可以通过添加tabindex属性使其成为交互式的.如果你这样做,那么你将需要添加一个role描述元素的功能(role=region如果你被困住你可以使用),这样屏幕阅读器可以宣布它是什么而不是让用户认为她已经登陆控件或者预期能够采取行动.

如果您将焦点移动到没有屏幕阅读器的用户的元素,或者页面加载时页面显示的第一件事是某种警报,那么这应该没问题.

但是,既然你没有提供任何背景信息,也没有提供任何例子,并且考虑到所有这些可以做得比没有做任何事情更糟糕的方法,请问问自己:

是你要宣布的事情......

  1. ......警报或对话?
  2. ...一个已经可以接收键盘焦点的控件?
  3. ...将重点关注所有用户,而不仅仅是那些有屏幕阅读器的用户?

如果你最后说不两次,那你不应该这样做.

如果您可以提供显示您想要做的事情的示例网址,那么我很乐意帮助您实现目标.否则,我担心你可能正在编写一些最终为屏幕阅读器用户创建陷阱或屏障的东西.