【发布时间】:2018-07-13 04:58:29
【问题描述】:
如果 aria-label 的内容发生变化,是否可以让屏幕阅读器重新读取 select 元素?
我做了一个简单的 sn-p,我知道我没有遵循大多数 aria 约定,以表明我的意思。
如果您打开屏幕阅读器并单击 div,它会读取标签“未选中”,然后按空格标签将更新,但屏幕阅读器将保持静音。虽然如果您单击关闭然后再次打开它会读取新标签。
这是让屏幕阅读器阅读更新的正确方法还是我不知道的另一种方法?
let toggleSwitch = document.querySelector('.toggle-switch');
toggleSwitch.addEventListener("keyup", function(e) {
let code = (e.keyCode ? e.keyCode : e.which);
if (code == 32) {
let nextState = toggleSwitch.getAttribute('aria-label') == 'unchecked' ? 'checked' : 'unchecked';
toggleSwitch.setAttribute('aria-label', nextState);
}
})
.toggle-switch {
width: 50px;
height: 50px;
}
.toggle-switch[aria-label="unchecked"] {
background: red;
}
.toggle-switch[aria-label="checked"] {
background: green;
}
Press space to change state
<div class="toggle-switch" tabindex="0" aria-label="unchecked"></div>
感谢您的帮助。
【问题讨论】:
标签: javascript html wai-aria screen-readers