我有一个库,可以即时创建编辑器(http://epiceditor.com),并自动设置键快捷方式。快捷键可以在选项中进行配置,所以我不能使用e.altKey
,e.ctrlKey
等。Stuck alt /修饰键与javascript
由于某些原因,修改键未在Mac/Ubuntu浏览器上设置回false
有时。
在Windows上,它似乎每次都会发生。您可以通过单击JSBin中的渲染然后按alt + p来重现此操作。你应该看到“Yay”出现。现在,如果在Windows上再按只需 p。你会看到耶再次出现。 Mac和Ubuntu用户偶尔会看到同样的问题,但很难重现。
另外请注意,这只发生在alt键似乎。下面我在16(alt)旁边有16个(换班)。如果你交换出来,它会按预期工作。
为精简测试用例的代码是:
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;
}
});
演示:http://jsbin.com/uhupah/3/edit#javascript,html
同样的问题:http://jsbin.com/uhupah/4/edit - 如果我把所有的代码移动到keydown。 Windows的问题更多的是Linux或OS X,因为这些发生的频率较低。 –
@OscarGodson哇!不能始终如一地重现错误确实难以解决。希望你的解决方案足以满足你的需求。 – ddtpoison777