【发布时间】:2021-03-08 06:15:58
【问题描述】:
我正在努力为一个程序添加辅助功能,以供有视力障碍的用户使用。为此,我们使用 tab 键在页面中进行操作。然后,用户可以使用空格键作为回车键,例如打开他们关注的链接。我一直在使用空格键以这种方式操作(使用“e.preventDefault()”),当然在输入字段内时除外。我写了对我来说合乎逻辑但不起作用的东西。请问有人有什么建议吗?这是我在 javascript 文件中的内容:
var textFieldEntry = document.querySelectorAll('input.field-input');
if (e.key == 'Space' || e.keyCode == 32) {
if (e.target !== textFieldEntry) {
e.preventDefault();
e.target.click();
};
}
【问题讨论】:
-
你为什么要这样做?语义 HTML 将按预期运行,因此将
<a>用于链接<button>用于按钮等。要使超链接有效,它必须具有有效的href,这是您要克服的问题吗? -
附注
Enter用于超链接,space用于复选框等。您是否对每个项目的行为感到困惑? -
我正在为要求他们的网站以这种方式行事的客户这样做。我现在正在研究是否有“preventDefault() unless”类型的编码。
-
改变预期行为对于可访问性来说是一个糟糕的想法,因为用户可能会按
space滚动页面,让它意外激活链接实际上会使网站更少可访问。 -
顺便说一句,你的代码有问题的原因是
e.target是一个项目,querySelectorAll抓取所有项目,所以它们不匹配,看看实现一个“.hasClass”函数和检查类名而不是stackoverflow.com/questions/5085567/…
标签: javascript ruby-on-rails accessibility keycode