【发布时间】:2012-06-27 05:17:41
【问题描述】:
我有一个库,可以即时创建编辑器 (http://epiceditor.com) 并自动设置快捷键。快捷方式可以在选项中配置,所以我不能使用e.altKey、e.ctrlKey等,只是提醒一下。
由于某种原因,在 Mac/Ubuntu 浏览器上,修饰键未设置回 false有时。
在 Windows 上似乎每次都会发生。您可以通过单击 JSBin 中的渲染然后按 alt+p 来重现此情况。您应该会看到“Yay”出现。现在,如果在 Windows 上按 just 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;
}
});
【问题讨论】:
标签: javascript dom-events keyboard-shortcuts