Opera中的KeyPress故障

时间:2012-02-08 20:05:54

标签: javascript browser keypress opera dom-events

我正在使用以下代码在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没有很好地处理它)。

2 个答案:

答案 0 :(得分:1)

Opera乱七八糟,keydown事件不重复,你无法阻止opera中keydown的默认值。更多http://quirksmode.org/dom/events/

答案 1 :(得分:0)

这是一个已知的错误,应该(最终!)很快得到解决。简而言之,keypress事件不会重复keydown事件。如果你想要重复(而不关心那些不像大多数功能键那样在所有浏览器中激活按键的键),那么听一下按键应该是一个合理的跨浏览器解决方案。