【问题标题】:Why is ctrlKey's behaviour so weird?为什么 ctrlKey 的行为如此奇怪?
【发布时间】:2017-08-28 18:25:10
【问题描述】:

示例 sn-p:

document.addEventListener('keydown', (event) => {
    if (event.code === 'Delete') {
        console.log('The delete key was pressed' + 
        (event.ctrlKey ? ' while the control key was held down.' : '.'));
    }
});

在这个例子中,第二个 sn-p 似乎永远不会被应用。如果我将event.ctrlKey 更改为event.altKey,然后按alt+del,它会按照我的预期正确记录。

有人可以帮助我理解这种不一致的行为,并帮助我找到解决方法吗?

编辑:我应该提到的东西 - 它似乎在浏览器(Chrome)中运行良好。应用场景实际上是一个基于 Electron 的应用程序。我还注意到它没有记录第二个 sn-p - keyEvent 根本没有触发。这现在让我认为这是一个冲突的键绑定,或者应用程序正在阻止密钥。不过,我仍然想知道是否有(适当的)解决方法。

【问题讨论】:

  • 您的代码按预期工作。将其转储到控制台中,然后单击您的页面(文档),一切正常。也许是浏览器的问题?
  • event.code的支持表好像quite red
  • @jmargolisvt 有趣的是,我实际上并没有在 Chrome 中进行测试——它实际上应用于基于 Chromium 的应用程序 (Discord)。看起来这是特定于该客户的东西。我还注意到它没有记录第二个 sn-p - 它根本没有记录任何东西。 keyEvent 永远不会触发。这让我认为这可能是一个冲突的键绑定?

标签: javascript electron keyevent


【解决方案1】:

您可能使用的是 Mac?比|| event.metaKey 更有帮助

document.addEventListener('keydown', (event) => {
    if (event.code === 'Delete') {
        console.log('The delete key was pressed' + 
        ((event.ctrlKey || event.metaKey) ? ' while the control key was held down.' : '.'));
    }
});

【讨论】:

  • 我不是 - 看看我的编辑,我相信这不是 .ctrlKey 的具体问题,而是我正在使用的应用程序。
  • @aetheryx 哼哼,而不是(event) => { 你试过用function (event) {
  • 同样的结果。组合键 Delete + ctrl 似乎已被占用,它没有记录任何内容。碰巧知道我可以“覆盖”它的任何方式吗?
猜你喜欢
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
相关资源
最近更新 更多