我正在使用以下代码在JavaScript中检测用户的按键:
$(document).bind('keydown', function (event) {
'use strict';
var keyCode = event.keyCode;
switch (keyCode) {
case '{N}':
doSomething();
break;
default:
break;
}
});
其中doSomething
是先前定义的函数,{N}
是JavaScript Char Codes中的任何一个。
它可以在每个主要浏览器中正常运行,但在Opera中,即使按键仍然按下,它也只会调用doSomething
一次,而不是,直到键为释放。
我该怎么做才能解决这个问题?
我使用keypress
事件而不是keydown
解决了它(Opera没有很好地处理它)。
答案 0 :(得分:1)
Opera乱七八糟,keydown事件不重复,你无法阻止opera中keydown的默认值。更多http://quirksmode.org/dom/events/
答案 1 :(得分:0)
这是一个已知的错误,应该(最终!)很快得到解决。简而言之,keypress事件不会重复keydown事件。如果你想要重复(而不关心那些不像大多数功能键那样在所有浏览器中激活按键的键),那么听一下按键应该是一个合理的跨浏览器解决方案。