【问题标题】:KeyPress malfunction in OperaOpera中的按键故障
【发布时间】:2012-03-01 07:36:52
【问题描述】:

我正在使用以下代码在 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 处理不好)。

【问题讨论】:

    标签: javascript browser keypress opera dom-events


    【解决方案1】:

    这是一个已知的错误,应该(终于!)很快得到修复。简而言之,keydown 事件不会重复,而 keypress 事件会重复。如果您想要重复(并且不关心在所有浏览器中像大多数功能键一样不会触发 keypress 的键),则改为听 keypress 应该是一个合理的跨浏览器解决方案。

    【讨论】:

      【解决方案2】:

      Opera 搞得一团糟,keydown 事件不重复,不能阻止 opera 中 keydown 的默认设置。更多http://quirksmode.org/dom/events/

      【讨论】:

        猜你喜欢
        • 2011-10-15
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        相关资源
        最近更新 更多