知道为什么会这样吗?我通常会认为Chrome会对代码更宽容吗?
$(document).keypress(function(e) {
if(e.keyCode == 39) rightImage();
if(e.keyCode == 37) leftImage();
});
这就是我的按键显示的样子。我错过了什么吗?右图();和leftImage();是因为我在其他地方也使用这些功能而应该起作用的功能
感谢您的帮助!
答案 0 :(得分:37)
将keypress
更改为keydown
:
$(document).keydown(function(e) {
if(e.keyCode == 39) rightImage();
if(e.keyCode == 37) leftImage();
});
按下键时会发生keydown事件,紧接着是按下按键事件。然后在释放密钥时生成keyup事件。
为了理解keydown和keypress之间的区别,它 有助于理解“字符”和“字符”之间的区别 “键”。 “键”是计算机键盘上的物理按钮,而a “字符”是通过按下按钮键入的符号。在理论上, keydown和keyup事件表示按下或释放的键, 而keypress事件表示正在键入的字符。该 所有浏览器的理论实现都不相同。
答案 1 :(得分:2)
在这里找到答案:http://api.jquery.com/keypress/
“如果你想在Chrome中使用箭头,删除,退格键,你必须使用keydown。这些键上的keypress仅适用于Firefox和Opera。”
您的代码在iE8(在FF中工作)对我不起作用,所以我将按键切换到了keydown。现在在IE中工作。这里没有Chrome测试。
答案 2 :(得分:0)
是的,可以通过将onkeypress
事件更改为onkeydown
来实现。此外,仅当您要在空间单击上触发事件的Internet Explorer时,此问题才存在。