jQuery的箭头键事件在Firefox以外的任何环境中都不起作用

izj3ouym  于 2022-12-18  发布在  jQuery
关注(0)|答案(2)|浏览(82)

我创建了一个投资组合网站,在浏览图片时,我希望用户能够使用箭头键导航。我有以下代码,在Firefox中运行良好,但在Chrome、Safari或IE中运行不了。

$(document).keypress(function (evt) {
    if (evt.keyCode == 39) { 
      evt.preventDefault(); 
      $.scrollTo('+=564px', 800, { axis:'x' }); 
    } else if (evt.keyCode == 37) { 
      evt.preventDefault();
      $.scrollTo('-=564px', 800, { axis:'x' });
    }
  });

我已经安装了scrollTo插件,并且运行良好,并且有一个有效的jQuery文件,所以这不是一个问题。有谁能告诉我为什么这个插件在其他浏览器上可能不起作用吗?
实时示例here
总是很感激帮助!

tp5buhyn

tp5buhyn1#

试试这个:

$(document).bind('keydown',function(evt) {

});

代替

$(document).keypress(function(evt) {

});

这是因为IE处理KeyPress与FireFox不同。

编辑因为您很乐意得到一个像样的答案:

我还想将您的语句更改为switch

$(document).bind('keydown',function(evt) {
        switch(evt.keyCode) {
        case 65:
                    alert("you pressed key 65");
                    break;
                }
});

xtupzzrd

xtupzzrd2#

如果您希望跨浏览器使用此方法,还应该注意keyCode在不同浏览器之间可能不相同。jQuery提供了属性event.which,该属性用于规范化浏览器之间的差异。
http://api.jquery.com/event.which

来自文档:

event.which规范化event.keyCodeevent.charCode。建议在键盘按键输入时注意event.which

相关问题