Opera中的KeyPress故障

KeyPress malfunction in Opera

本文关键字:故障 KeyPress 中的 Opera      更新时间:2023-09-26

我使用以下代码来检测用户的按键,使用JavaScript:

$(document).bind('keydown', function (event) {
    'use strict';
    var keyCode = event.keyCode;
        switch (keyCode) {
        case '{N}':
             doSomething();
             break;
        default:
             break;
        }
});

其中doSomething是先前定义的函数,{N}是任意JavaScript字符码。

它在每个主要浏览器中都能正常工作,但在Opera中,即使按键一直被按下,它也只调用doSomething一次,而不是直到按键释放为止。我能做些什么来解决这个问题?


编辑

我使用keypress事件而不是keydown(Opera处理得不好)解决了这个问题。

Opera会造成混乱,keydown事件不会重复,并且您无法阻止Opera中keydown的默认值。了解更多信息http://quirksmode.org/dom/events/

这是一个已知的错误,应该(最终!)很快得到修复。简而言之,当按键事件发生时,按键按下事件不会重复。如果你想重复(并且不在乎像大多数功能键一样在所有浏览器中不会触发按键的键),那么听按键应该是一个合理的跨浏览器解决方案。