【问题标题】:Set keydown to function with jquery not working in firefox将keydown设置为jquery在firefox中不起作用
【发布时间】:2011-04-19 15:31:56
【问题描述】:

基本上我需要我的页面来响应左右箭头键。所以试图让body标签触发一个事件——让它在chrome等中工作,在firefox中什么都不做——尝试谷歌搜索,在50个不同的结果之后仍然没有骰子。有人有什么想法吗?

这就是我所拥有的适用于 chrome 的东西-

body 标签调用这个脚本

$(document).ready(adjust());

------------------javascript

function adjust(){
 $("body").keydown(function(){arrowKey(event.keyCode);});
}

function arrowKey(k){
alert(k);
    if (k==37)
        alert("Left");
    else if (k==39)
        alert("Right");
    else if (k==32)
        alert("space");
}

出于测试目的,我在函数中用警报替换了方法,但我需要能够根据按下的箭头调用不同的函数

【问题讨论】:

    标签: javascript jquery firefox keydown


    【解决方案1】:

    实际上,即使没有“事件”,它也可以在 chrome 中使用,因为 event 是 chrome 中的关键字,并且填充了最后触发的事件。

    它在firefox中不起作用的原因是你应该像这样分配事件:

    $(document).keydown(function(event){arrowKey(event.keyCode);});
    

    由于某种原因,“body”不接受 keydown 事件。希望对您有所帮助。

    【讨论】:

      【解决方案2】:
      $("body").keydown(function( ){arrowKey(event.keyCode);});
                                 ^ 
      

      event 可能丢失了

      $("body").keydown(function(event){arrowKey(event.keyCode);});
      

      开启JSFIDDLE。

      【讨论】:

      • 它可以通过将其更改为 $("html") 而不是 "body" 来调用 firefox 中的警报 - 但它只是产生了一大堆新问题...叹息,谢谢
      • 使用 $(document) 而不是 $("body")
      • @omerkirk 也许这样会更好。
      【解决方案3】:

      好吧,为什么你不使用 JavaScript

      window.body.onkeydown=function(evt)
      {
      arrowKey(evt.keyCode);
      }
      

      【讨论】:

        猜你喜欢
        • 2010-12-15
        • 2012-02-27
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多