箭头键在Firefox中不起作用

cab*_*ret 5 javascript firefox jquery keypress

我们正在HTML/CSS/JS中创建幻灯片,但由于某些原因它在Firefox中无法正常工作.它在Webkit浏览器中运行没有问题.

代码是这样的:

    keyPress : function() {
      $( document.body ).keydown(function(e) {
         if ( e.keyCode === 37 || e.keyCode === 39 || e.which == 37 || e.which === 39) {
            e.preventDefault();
            ( e.keyCode === 39 || e.which === 39 ) ? Slides.next() : Slides.prev();
         }
      });
   },
Run Code Online (Sandbox Code Playgroud)

如果我使用$( document )而不是( document.body )它确实改变我的颜色,但幻灯片不会改变..

出于某种原因,Firefox(7.0.1,OSX Lion)没有拿起按键..它在Safari/Chrome中运行没有问题.

我们正在测试的网站是:#took link out

Bla*_*ger 7

更新:我认为你的问题在于使用"document.body"选择器.这适用于Chrome,但不适用于Firefox(http://jsfiddle.net/Jncrh/2/)请尝试选择"文档",看看它是否有效.(http://jsfiddle.net/Jncrh/5/)

$(document).bind('keydown',function(e){
    if (e.which==37 || e.which==39) {
        e.preventDefault();
        if (e.which==37) {
            alert("going back");
        } else {
            alert("going forward");
        }
    }
}); 
Run Code Online (Sandbox Code Playgroud)

Firefox 可以在上面的示例中获取按键,因此我怀疑问题出在代码的其他地方.

一篇:快速谷歌搜索显示Firefox使用event.charCode而不是event.keyCode.试试这个:

key = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if (key===37 || key===39) {...
Run Code Online (Sandbox Code Playgroud)

然而,jQuery的应该是能够拿起所有那些与自己的event.which,所以我不明白为什么不工作的,是给你的.