屏幕阅读器和JavaScript焦点事件的可访问性?
我有一个表单,当输入有效文本时,它有一些JavaScript可以前进到下一个字段(下面的示例)。我的问题是屏幕阅读器如何处理这个问题。这会让读者感到困惑,还是会检测到焦点的变化并向用户读出新字段 HTML屏幕阅读器和JavaScript焦点事件的可访问性?,javascript,accessibility,screen-readers,Javascript,Accessibility,Screen Readers,我有一个表单,当输入有效文本时,它有一些JavaScript可以前进到下一个字段(下面的示例)。我的问题是屏幕阅读器如何处理这个问题。这会让读者感到困惑,还是会检测到焦点的变化并向用户读出新字段 HTML <form action="/some/action" method="post" role="form"> <legend>A Form</legend> <label for="first_number">First Numb
<form action="/some/action" method="post" role="form">
<legend>A Form</legend>
<label for="first_number">First Number</label>
<input id="first_number" name="first_number" required type="text" value="">
<label for="second_number">Second Number</label>
<input id="second_number" name="second_number" required type="text" value="">
<button type="submit">Submit</button>
</form>
因此,在用户在第一个字段中输入三位数字后,第二个字段将调用focus方法 我认为这里的问题是意外行为。对于没有视力的用户来说,任何非标准的行为都可能造成混乱,因为它的工作原理与其他网站不同 另外,这是你在每个领域都拥有的功能,还是只是其中的一部分?如果您有多个具有不同行为的字段,这将特别令人困惑 几年前,关于这一点有一个非常好的线索,有几个比我知识渊博的人提供了信息。
您需要单击每页底部的“下一条消息”链接来读取线程中的所有消息。据我所知,当
.focus()
发生时,它们都会进行回调并基本上运行document.activeElement
,因此通过运行.focus()
(作为a11y标准)没有必要使用aria atomic或其他live change内容,因为他们已经将其用作活动元素指示器,无论何时通过选项卡调用它,或者通过.focus()
手动调用它,但作为注释保留,因为我对所有屏幕阅读器都不是100%肯定。谢谢,这个链接很有帮助,也让我想到了其他可访问性问题。特别是流动性问题。虽然与屏幕阅读器无关,但有移动性问题的用户错误按键使用auto tab会变得更加困难。就屏幕阅读器而言,我仍然觉得自己处于黑暗之中。文档非常稀少,而且实际用户对屏幕阅读器体验的信息也很少。您可以使用几个免费的屏幕阅读器。我建议将NVDA与FireFox或IE结合使用。如果你在Mac上,VoiceOver也是一个非常好的免费工具。
(function (document, window) {
function getFocusCallback(current_focus, go) {
var check = document.getElementById(current_focus);
var el = document.getElementById(go);
var pat = new RegExp('^\\d{3}$');
return function callback() {
if (pat.test(check.value)) {
el.focus();
}
};
}
document.getElementById('first_number').addEventListener('input', getFocusCallback('first_number', 'second_number'));
})(document, window);