我有一个动态创建编辑器的库(http://epiceditor.com),还自动设置快捷键。快捷方式可以在选项中配置,所以我不能使用e.altKey
,e.ctrlKey
等,只是提醒一下。
出于某种原因,修饰键false
有时不会在 Mac/Ubuntu 浏览器上重新设置。
在 Windows 上,它似乎每次都会发生。您可以通过单击 JSBin 中的渲染然后按alt+来重现这一点p。您应该会看到“Yay”出现。现在,如果在 Windows 上再按一次 p。您会看到“Yay 再次出现。Mac 和 Ubuntu 用户偶尔会看到同样的问题,但很难重现它。
另请注意,这只发生在alt它看起来的密钥上。下面我在 18 (alt) 旁边有 16 (shift)。如果您将它们换掉,它将按预期工作。
精简测试用例的代码是:
var modKey = false;
var modKeyCode = 18; //16
document.body.addEventListener('keydown', function (e) {
if (!modKey && modKeyCode == e.keyCode) {
modKey = true;
}
if (modKey && e.keyCode == 80) {
console.log('Yay!');
}
});
document.body.addEventListener('keyup', function (e) {
if (modKey && modKeyCode == e.keyCode) {
modKey = false;
}
});