javascript - 为什么 `click` 事件在我按下 Enter 时在我的 <button> 上触发?

标签 javascript html dom accessibility dom-events

我只添加一个 click我的事件处理程序 <button> .

document.getElementsByTagName("button")[0].addEventListener("click", event => {
  event.preventDefault();

  console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>

( Demo link )

然而,当我在 Firefox 中切换到按钮,然后按 Enter 时,我看到了 click事件被解雇。但是,我在任何地方都看不到这种行为的记录。这是标准行为吗?我可以指望它在所有浏览器中都能正常工作吗?

最佳答案

这主要是因为许多作者在历史上使用点击事件编写代码,而忘记考虑不点击的用户(无论是因为他们更喜欢使用键盘导航,还是因为残疾而难以使用指点设备,或任何其他原因)。

行为是 documented in the HTML specification :

Certain elements in HTML have an activation behavior, which means that the user can activate them. This triggers a sequence of events dependent on the activation mechanism, and normally culminating in a click event, as described below.

For accessibility, the keyboard’s Enter and Space keys are often used to trigger an element’s activation behavior.

然后继续详细解释步骤。

关于javascript - 为什么 `click` 事件在我按下 Enter 时在我的 <button> 上触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073140/

相关文章:

javascript - localStorage 的 'storage' 事件中的未定义属性

javascript - 为什么我的新闻通讯表单在 Amazon CloudFront 上不起作用?

javascript - 出于某种原因,我的 unslider 不随屏幕缩放..包括 fiddle

javascript - 检查浏览器是否支持 JavaScript 中的 document.querySelectorAll

javascript - Angular 8 jsonp 回调未调用

javascript - 分区显示:none - want to only load content when it's visible

android - 如何在 ionic1.0.0_beta.14 上调整底部的选项卡

javascript - 如何使用 ajax 显示多个字符串的串联? (或不)

html - 翻转一个 div 并在翻转时更改内部 div 的颜色?

具有动态加载图像的 jQuery galleria 插件