javascript - 如何检测单个控件的按键事件而不是组合键?

标签 javascript google-chrome events google-chrome-extension dom-events

很容易检测控制键事件

document.addEventListener('keyup', handler, false);

...

function handler(e) {
    var key = e.which || e.keyCode;

    if (key == 17) { // Control key
        ...
    }
}

问题是任何组合键如control-ccontrol-v也会触发事件,似乎事件处理程序无法区分单个 controlcontrol-ccontrol kbd>.

我想要的是只允许按下并释放单个键,而不是组合键来触发事件。

最佳答案

这个怎么样:

var controlConsidered = false;

function ctrlPressed() {
  console.log("Control was pressed.");
}

function keydownhandler(e) {
  var key = e.which || e.keyCode;
  controlConsidered = (key == 17);
}

function keyuphandler(e) {
  var key = e.which || e.keyCode;
  if (key == 17 && controlConsidered) {
    ctrlPressed();
  }
}

document.addEventListener('keydown', keydownhandler, false);
document.addEventListener('keyup', keyuphandler, false);

关于javascript - 如何检测单个控件的按键事件而不是组合键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060901/

相关文章:

css - Chrome 不会垂直对齐表格单元格中的文本

javascript - 如何触发动态分配的 DOM 事件以及 Backbone 事件?

javascript - Chrome onMessage 监听器没有被调用

javascript - 如何制作一个简单的 HTML CSS 时间图

javascript - knockout : custom binding update not firing on computed field

JavaScript - 检测浏览器停止按钮点击

c# - 调整面板大小时图形缩放不稳

javascript - 在 JavaScript 中可以通过哪些方式将参数传递给函数?

javascript - OSX 10.11 - 如何使用标志 --use-fake-device-for-media-stream 打开 chrome?

json - Chrome 扩展图标 list