按钮和链接键盘触发器

Buttons and links keyboard triggers

在做研究时我遇到了 this statement:

Warning: Be careful when marking up links with the button role. Buttons are expected to be triggered using the Space key, while links are expected to be triggered using the Enter key.

  1. 有谁知道为什么按钮/链接使用不同的键?

  2. 可以同时使用SpaceEnter触发吗?

在阅读本文之前,作为用户,我不知道何时使用 SpaceEnter


快速浏览了 Google 以了解他们的工作。

我推测要回答 #1,但我相信用于激活按钮和超链接的键是操作系统的遗留物。对于超链接,想想 Windows Help in Windows 95 及其对 in-content 链接的依赖,或者 Hypercard 在 Mac 之前。另请注意,Space 从 (IIRC) 第一天起就在浏览器中滚动了一个页面。

回答第 2 个问题,不,这不行。这是因为 space 条会触发页面滚动,许多用户希望当焦点位于超链接上时,按下 Space 只会滚动页面。

简而言之,请尊重现有的键盘映射,因为有些用户依赖它们并且弄乱它们可能会对辅助技术用户以及不使用辅助技术的残障用户造成灾难性后果。

让我 re-state 你在 Mozilla 看到了什么:

A hyperlink can be fired by pressing the enter key. But a true button can be fired by pressing the enter key or the space bar. When a hyperlink has focus and the user presses the space bar, the page will scroll one screenful.

然后让我补充一下:

I think it’s also worth mentioning that events triggered by a space bar only fire when the key is released, whereas using the Enter key will fire the event as soon as you press the key down (prior to releasing it).

来源:Links, Buttons, Submits, and Divs, Oh Hell.

  1. 按钮是表单元素。

    如果您 select 一个 checkbox 元素,space 将在 enter[=39= 时切换复选框] 将提交表格。

    为了保持连贯性,按钮的作用相同。实际上,他们接受 enterspace 没有任何区别。

  2. 不仅可以还必须

    阅读里面Third rule of ARIA:

    For example, if using role=button the element must be able to receive focus and a user must be able to activate the action associated with the element using both the enter (on WIN OS) or return (MAC OS) and the space key.

  3. 这是历史原因,据我所知并不是官方推荐的定义

    例如 2000 年的一个旧错误 (https://bugzilla.mozilla.org/show_bug.cgi?id=56495) 已经指出 space bar 应该在按钮上工作。也许继承自 Windows 行为。