【问题标题】:IE role="alert" is not read on page load页面加载时未读取 IE role="alert"
【发布时间】:2019-08-03 10:10:46
【问题描述】:

我正在为我的项目添加辅助功能支持,最近发现如果使用 IE11 与页面一起加载元素,JAWs 不会读出带有 role="alert" 的元素。

如果没有可用数据,我有一个向服务器提交输入并接收错误跨度的响应的页面。错误范围已分配角色 =“警报”。使用 chrome 时页面加载后立即读取错误,但 IE 似乎忽略了该错误。

我无法将焦点设置到错误范围,因为需要将焦点设置到错误导致的字段。

我正在使用带有 IE11 的 JAWs 2019。

对于一个测试示例, 只需使用 IE11 打开带有内容的 HTML 文档:

<h1>title</h1>
<span role=alert>this is an alert</span>

在我的测试中,跨度不会立即读出。

更新: 在我的测试中,JAWs 2019 与 IE11 中的其他警报元素配合良好。只有当我看到问题时,我有一个与页面一起加载的警报元素。 JAW 应在元素加载后叙述警告元素。 Chrome 正在按预期工作。

【问题讨论】:

标签: jaws-screen-reader


【解决方案1】:

听起来您没有正确使用aria-live。它不应该在页面加载时阅读。如果在某些浏览器和屏幕阅读器组合中读取,则该组合不符合 html 和 aria 规范。

澄清一下,如果你使用role="alert",这会给你一个隐含的aria-live="assertive"。所以这个问题真的是关于aria-live

aria-live 区域应该在您更改该区域的内容时由屏幕阅读器自动读取。如果您在您的区域中插入文本,或向该区域添加新的 DOM 元素,则将在进行更改时读取它们。您可以使用aria-relevant 控制读取哪些类型的更改。文本更改和 DOM 添加是默认设置。您还可以使用aria-atomic 控制在活动区域​​内读取的信息量。

@Roy 在评论部分说可能有重复的问题。这不是同一个问题,因为另一个问题是正确使用aria-live

您真正想要做的是在您的页面上拥有一个现有的活动区域,例如

<div role="alert" id="someID"></div>

然后从服务器返回给您的&lt;span&gt;确实不需要需要role="alert"。它可以只返回一个&lt;span&gt;,其中包含错误消息

<span>this is an alert</span>

然后你必须将此消息注入&lt;div&gt;

<div role="alert" id="someID">
  <span>this is an alert</span>
</div>

现在您会听到屏幕阅读器读出的“这是一条提醒”。

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2014-01-27
    • 2016-06-10
    • 2019-04-07
    • 2011-02-27
    相关资源
    最近更新 更多