我正试图在网页中添加活动区域支持,以使NVDA与该页面一起使用。但是,我看到了aria-live属性与预期完全不同的行为。
<p>标记中的每条消息)转储到该区域,由屏幕阅读器读取。它工作良好,但唯一的问题是插入到活动区域div的第一条消息永远不会被NVDA屏幕阅读器读取。随后的消息将被完美地读取。当第一条消息被宣布时,动态地创建这个活动区域div。aria-live="assertive"并没有真正中断当前流来宣布消息。发布于 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:语句中的元素上,因此它不会在加载时呈现给页面:
<p>Last name:
<!-- ko if: lastName -->
<strong aria-live="polite" data-bind="text: lastName"></strong>
<!-- /ko -->
</p>我将其调整为将活动区域放在ko if:检查周围,现在按下按钮时就会宣布:
<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,它的工作,我相信你的意愿。我根本没有碰第二个。
https://stackoverflow.com/questions/41635984
复制相似问题