javascript - jQuery 未检测到 keyup 上的修饰符

标签 javascript jquery keypress meta-key

当我运行以下代码并按 Mac 上的命令键(使用 Chrome)时,metaKey 设置为 keydown 而不是 keyup。难道我做错了什么?我只是想跟踪按下的元键,以便我可以在 JavaScript 中使用它 - 如果有更好的方法,请告诉我:-)

   var metaPressed = false;
   $(document).keydown(function(e) {
     console.log('keydown ' + e.keyCode);
     if (e.metaKey || e.ctrlKey) {
       console.log('meta pressed');
       metaPressed = true;
     }
   });
   $(document).keyup(function(e) {
     console.log('keyup ' + e.keyCode);
     if (e.metaKey || e.ctrlKey) {
       console.log('meta unpressed');
       metaPressed = false;
     }
   });

这是相关键的控制台输出

// Pressing cmd
keydown 91
meta pressed
keyup 91

// Pressing control 
keydown 17
meta pressed 
keyup 17

// Pressing non-meta like spacebar
keydown 32
keyup 32

最佳答案

我现在明白了,我误解了 jQuery 如何处理修饰键。感谢@adeneo 的提示让我正确思考。

此外,如果您在按住元字符的同时按键,例如按 M-x,jQuery 不会发送“x”的按键,直到“M”也被释放。所以你不必担心诸如“meta down,x down,x up,meta up”之类的事情发生

关于javascript - jQuery 未检测到 keyup 上的修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088671/

相关文章:

jquery - 将箭头添加到推特 Bootstrap 的下拉药丸中?

javascript - 消除 ng-keypress 的抖动

javascript - 邻接矩阵图库

javascript - setTimeout(function, 100) 会影响性能吗?

javascript - 无法使用 jQuery 动态添加按钮添加新单元格

javascript - 如何使用 jquery 计算表格单元格的总计

javascript - 在其他网站上展示用户公开资料的推荐方式是什么?

javascript - 用js检测Fn键

C++ 如何使用 ESC 按钮终止我的程序

javascript - D3 Y 轴上的旭日面包屑