首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NVDA的行为

NVDA的行为
EN

Stack Overflow用户
提问于 2017-01-13 13:42:34
回答 1查看 429关注 0票数 0

我正试图在网页中添加活动区域支持,以使NVDA与该页面一起使用。但是,我看到了aria-live属性与预期完全不同的行为。

  1. 我尝试添加一个隐藏的活动区域,并将所有消息(包含在<p>标记中的每条消息)转储到该区域,由屏幕阅读器读取。它工作良好,但唯一的问题是插入到活动区域div的第一条消息永远不会被NVDA屏幕阅读器读取。随后的消息将被完美地读取。当第一条消息被宣布时,动态地创建这个活动区域div。
  2. aria-live="assertive"并没有真正中断当前流来宣布消息。
  3. 我正在使用淘汰赛在网页上。当HTML div被标记为活动区域时,根据敲除条件显示时,屏幕阅读器就无法检测到它。例如:最初加载页面时,$data为null。所以活区div是不存在的。但是当数据被获取时,div就会被插入。然而,NVDA并没有读取添加的div中的内容。这是预期的行为吗?有什么办法可以解决这个问题吗?
EN

回答 1

Stack Overflow用户

发布于 2017-01-13 16:54:14

快回答,抓紧时间。

在页面呈现时,必须将活动区域放在页面上。这将启动浏览器来监视它的更新。在事实之后添加元素只会引发浏览器,但不会触发它。

我分叉了你的钢笔,让它在第一个按钮中工作(通过浏览器将"XYZ“发音为"zeyes")。这是在调试模式下,因此根本没有CodePen代码(或框架)来插入它:

http://s.codepen.io/aardrian/debug/wgWqVm

非调试模式,这样您就可以看到代码:

http://codepen.io/aardrian/pen/wgWqVm

您的代码将aria-live放在一个包装在Knockout ko if:语句中的元素上,因此它不会在加载时呈现给页面:

代码语言:javascript
复制
<p>Last name: 
  <!-- ko if: lastName -->
    <strong aria-live="polite" data-bind="text: lastName"></strong>
  <!-- /ko -->
</p>

我将其调整为将活动区域放在ko if:检查周围,现在按下按钮时就会宣布:

代码语言:javascript
复制
<p>Last name: 
  <div aria-live="polite">
    <!-- ko if: lastName -->
      <strong data-bind="text: lastName"></strong>
    <!-- /ko -->
  </div>
</p>

是的,我将<div>放在<p>中,但这只是为了演示。

测试在NVDA 2016.4 /火狐50.1.1,它的工作,我相信你的意愿。我根本没有碰第二个。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41635984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档