【问题标题】:jQuery keyup event trouble in OperaOpera中的jQuery keyup事件问题
【发布时间】:2012-06-26 16:08:46
【问题描述】:

我在我的网站中使用了一些热键,该网站仅在 Chrome 和 Firefox 中进行了测试,一切正常,但是当我在 Opera 中测试网站时,我发现我的许多热键都不起作用,代码检查后发现我的函数

$(document).bind('keyup', function(e){
  //....
}); 

被 Opera 忽略,当我尝试将其更改为

$(document).bind('keypress', function(e){
  //....
});

它在 Opera 中开始正常工作,但被 Chrome 忽略。有没有跨浏览器的出路?我也在使用 jquery 1.5.1。

upd.:function(e) 更改为 function (event) 后,仅向下箭头和 esc。按钮仍然不起作用

【问题讨论】:

  • 试试这个:$(document).bind('keyup', function(event){ //.... });
  • 你有没有通过像这个函数(事件)这样的函数中传递事件来检查它
  • 是的,在我的真实代码中我使用的是“function(e){...}”
  • 在包括 Opera 在内的所有浏览器中查看此演示:jsfiddle.net/rathoreahsan/cxV8D
  • 检查这个演示以及与函数(e)的行为不同:jsfiddle.net/rathoreahsan/cxV8D/1

标签: jquery events google-chrome cross-browser opera


【解决方案1】:

keyup 在旧版浏览器中也存在类似问题。

尝试使用keydown 而不是keypresskeyup

Opera(Chromium 版本)中的特殊/控制键似乎存在问题,只能触发 keydown

另一个问题是输入中的 Esc 会触发 blur 而不是 keyup,因此您必须再次绑定到 keydown

【讨论】:

    【解决方案2】:

    而不是使用这个:

    $(document).bind('keyup', function(e){
      //....
    }); 
    

    查看演示:http://jsfiddle.net/rathoreahsan/cxV8D/1/

    试试这个:

    $(document).bind('keyup', function(event){
      //....
    });
    

    查看演示: http://jsfiddle.net/rathoreahsan/cxV8D/

    【讨论】:

    • 我发现就像在这个例子中jsfiddle.net/sfpQ8 一样,当我在 Opera 中按下向上/向下/esc 按钮时,只有向上按钮起作用
    • 即使在您的示例按钮中,Opera 也会忽略向下箭头
    • 您的解决方案中的逻辑为 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多