javascript - Why does a `click` event get triggered on my
问题描述
I'm only adding a click
event handler on my <button>
.
document.getElementsByTagName("button")[0].addEventListener("click", event => {
event.preventDefault();
console.log("Click:", event);
});
<button>Press <kbd>Enter</kbd> on me</button>
Nevertheless, when I tab to the button in Firefox, then press Enter, I see the click
event being fired. However, I cannot see this behaviour documented anywhere. Is this standard behaviour, and can I count on it working in all browsers?
解决方案
这主要是因为许多作者在历史上使用点击事件编写代码,而忘记考虑不点击的用户(无论是因为他们更喜欢使用键盘进行导航,还是因为残疾而难以使用指点设备,或任何其他原因)。
该行为记录在 HTML 规范中:
HTML 中的某些元素具有激活行为,这意味着用户可以激活它们。这会触发一系列依赖于激活机制的事件,并且通常会在点击事件中达到高潮,如下所述。
…</p>
对于可访问性,键盘的 Enter 和 Space 键通常用于触发元素的激活行为。
然后继续详细解释这些步骤。
推荐阅读
- sql - 从多个表中识别最新记录并将它们全部连接在一起
- sql - 跨垃圾维度计数和分组
- google-cloud-platform - 在 Cloud Run 上加载深度学习模型比在 Cloud 函数上加载它们要慢
- html - 未找到“password_change_done”的 Django 反向
- laravel - Laravel Vue 加载侧栏菜单 API
- python - 根据熊猫数据框中给定子索引的另一列中的最大值创建一个新列
- reactjs - TS2339:“typeof Button”类型上不存在属性“Ripple”
- python - 如何在 Pandas 中过滤多索引列的行
- mysql - Django - 在多对多关系中连接两个字段以搜索字符串
- python - 如何在请求上下文之外模拟 flask.g 和 Flask-RESTful.request