禁用退格键和输入导航是否会影响可访问性?

Would disabling the backspace and enter navigation be a problem for accessibility?

我们的应用程序在 IE 中存在问题,用户无意中按下非文本控件上的退格键导致导航和问题。我的任务是抑制退格键。但我们是一款需要符合 508 标准的应用程序。可访问性很重要。抑制退格不会损害我们的可访问性吗?如果是这样,Chrome 和 Edge 就没有这个问题。他们不使用相同的键盘快捷键吗?

Alt + 左箭头 是大多数较新浏览器的标准后退按钮。

由于这在 IE 中也有效,因此用户仍然可以使用键盘返回导航。

从技术上讲,这可以被视为失败,因为您干扰了预期的行为,但我个人认为让整个表单消失的不便胜过,所以如果您决定禁用 backspace 键,如果 当前选择的 输入为空,则可以。

确保这只会停止正常的 backspace 行为,如果当前选择了 <input>(或 <textarea>),使用类似 document.activeElement.

这样,如果用户没有选择输入,他们仍然可以使用 退格键 返回。

一种“包罗万象”的解决方案,无需禁用 backspace

在不禁用 backspace 按钮的情况下解决此问题的一种方法是使用 window.onbeforeunload;

创建一个设置为 false 的标志,如果任何输入有值/进行更改等,则更改为 true

然后使用 window.onbeforeunload 并检查该标志的值。如果是 true 则显示一条消息,false 和 return null 所以不会显示警告。

下面的示例应该一直运行到 IE9,并在允许导航之前发出警告。

无论如何我都鼓励你实现这个 - 不小心关闭页面、误按物理后退按钮等也很容易,所以这样做可以防止所有意外导航。

var changed = false; // change it to true if an input has a value / has changed.
window.onbeforeunload = function() {
    return changed ? "Are you sure you want to navigate away? Unsaved changes will be lost." : null;
}

Edge 和 Chrome 自愿禁用退格键以返回历史记录,因为存在意外数据丢失的风险。

这已于 2018 年 10 月和 Chrome 52 中从 Edge 中删除。

您禁用它是完全正确的,因为它旨在保护您的用户。