javascript - 如何在不捕获 keydown 事件的情况下查看修改键是否被按住?

标签 javascript jquery web google-chrome-extension

我知道如何捕捉 keyup 和 keydown 事件。

我希望我的程序查看哪些修改键(例如:元键、控制键、Alt 键等)当前被按住,即使程序没有观察到这些键的按键事件也是如此。

我知道点击事件和其他事件可以告诉我按下了哪些修改键,但我的程序不能等待事件发生。

我需要我的程序定期检查修改键(例如,每 100 毫秒)。我该怎么做呢?如果有帮助,我的程序会使用 jQuery。

最佳答案

您可以将这些值存储在变量中,并在需要时随时检查它们。当然需要一个事件监听器来更新该变量:

// assume no hot key is pressed

var object = {
  ctrlKey: false,
  altKey: false,
  shiftKey: false
};

// update whenever a keydown or keyup event is fired

document.addEventListener("keydown", function(e) {
  for(var key in object) {
    if(object.hasOwnProperty(key))
      object[key] = e[key]; // update the object from the event e
  }
});

document.addEventListener("keyup", function(e) {
  for(var key in object) {
    if(object.hasOwnProperty(key))
      object[key] = e[key];
  }
});

// testing example:

function check() {
  console.log("Checking:");
  console.log("Alt key:", object.altKey);
  console.log("Ctrl key:", object.ctrlKey);
  console.log("Shift key:", object.shiftKey);
}

setInterval(check, 1000); // calling check every second without waiting for an event to occur

关于javascript - 如何在不捕获 keydown 事件的情况下查看修改键是否被按住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124086/

相关文章:

javascript - 以编程方式更改文本框值时 IE8 触发更改事件

javascript - 带有按钮的 Html 两种语言选项(无需重定向到不同的页面)

javascript - 如何保留网站的 "theme"并添加新的动态页面?

javascript - 获取页面中的元素数

javascript - 对部分字符串日期进行排序

javascript - jQuery Mobile - 如果选择输入,则固定标题更改大小

javascript - jqgrid对html单元格元素的自定义搜索

mysql - 在线安全和在数据库中存储货币值

javascript - ReactJS 在渲染状态下循环

javascript - 为什么 .filter() 在 Internet Explorer 8 中不起作用?