Element: 键盘按下事件 - Web API 接口参考 编辑

keydown事件触发于键盘按键按下的时候。

keypress 事件不同的是, 所有按键均会触发keydown事件,无论这些按键是否会产生字符值。

BubblesYes
CancelableYes
InterfaceKeyboardEvent
Event handler propertyonkeydown

keydown 与 keyup 事件捕获了键盘按键的操作,而 keypress 反映了具体输入某个字符的值。比如, 小写"a" 在keydown 和 keyup事件中输出的是大写A的Unicode编码65,但是在keypress中输出的就是小写"a"的Unicode编码97。大写 "A"在这些事件中输出的都是Unicode编码65。

键盘事件只能由 <inputs>, <textarea> 以及任何具有  contentEditable 或 tabindex="-1"属性的组件触发。

自 Firefox 65起,  keydown 与 keyup 事件会在IME(输入法编辑器)复合事件中被触发,目的是为了提升CJKT(中日韩台地区)用户跨浏览器性能, (bug 354358,更多详情访问 keydown and keyup events are now fired during IME composition ). 若要忽略复合事件中所有 keydown 事件, 可以按照如下代码修改 (229是某个在IME中触发的键盘事件对应的 keyCode):

eventTarget.addEventListener("keydown", event => {
  if (event.isComposing || event.keyCode === 229) {
    return;
  }
  // do something
});

示例

addEventListener keydown 示例

这个例子展示了当你在<input>元素中按下一个按键时, KeyboardEvent.code 的取值 

<input placeholder="Click here, then press down a key." size="40">
<p id="log"></p>
const input = document.querySelector('input');
const log = document.getElementById('log');

input.addEventListener('keydown', logKey);

function logKey(e) {
  log.textContent += ` ${e.code}`;
}

onkeydown 示例

input.onkeydown = logKey;

Specifications

SpecificationStatus
UI EventsWorking Draft

Browser compatibility

BCD tables only load in the browser

See also

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:77 次

字数:5163

最后编辑:6年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文