【问题标题】:Capturing "control" keydown press event in JavaScript在 JavaScript 中捕获“控制”按键按下事件
【发布时间】:2011-10-18 00:30:38
【问题描述】:

我试图弄清楚用户何时使用 JavaScript 在 HTML 页面中按下 control 键。

在下面的代码中,“CTRL UP”将按预期出现,但“CTRL DOWN”只有在我按下另一个键时才会出现,例如移位.

<html>
<head>
<script type="text/javascript">
window.addEventListener("keyup", function(event) {
  // Bind to both command (for Mac) and control (for Win/Linux)
  if (event.ctrlKey) {
    console.log("CTRL UP");
  }
}, false);

window.addEventListener("keydown", function(event) {
  // Bind to both command (for Mac) and control (for Win/Linux)
  if (event.ctrlKey) {
    console.log("CTRL DOWN");
  }
}, false);

</script>
</head>
<body>
Ctrl Demo
</body>
</html>

ctrl 被自己按下并按住时,有什么方法可以让“CTRL DOWN”键事件按预期工作?

注意:我正在尝试让它在 Google Chrome 扩展程序中工作,因此使用 Chrome 特定的 API 或技巧来完成这项工作是完全可以的。我在 Ubuntu 上使用 Google Chrome 15.0.874.83 beta。

【问题讨论】:

  • 如果有一些程序正在运行,在 OS 级别监听这个键,那么它不会在 js 中触发。

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


【解决方案1】:

您的代码对我有用,下面的 jQuery 也是如此。 (铬)

$(window).keydown(function(e){
    if (e.ctrlKey)
        console.log('Control Down');
});

使用警报有点尴尬,因为它会阻止进程,并且您不会看到对话框启动时发生的任何关键状态更改。我推荐使用 console.info/log/debug

【讨论】:

  • 不知道该说什么,这对我不起作用。按住 control 和 no 其他键只会在日志中产生“CTRL UP”消息。
  • 这不是正确的答案。请参阅下面的。
【解决方案2】:

如果您只想检测自己按下的 Ctrl 键,则以下操作将起作用(但请记住,IE addEventListener,您可以需要使用attachEventonkeydown 代替):

window.addEventListener("keydown", function(event) {
    // Bind to both command (for Mac) and control (for Win/Linux)
    if (event.keyCode == 17) {
        alert("Ctrl");
    }
}, false);

【讨论】:

    猜你喜欢
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多