有什么想法,为什么会发生这种情况?我通常认为Chrome会对代码更加宽容。
$(document).keypress(function(e) {
if(e.keyCode == 39) rightImage();
if(e.keyCode == 37) leftImage();
});
这就是我的键盘按键的样子。我有什么遗漏吗?rightImage(); 和 leftImage(); 是可以工作的函数,因为我在其他地方也使用了这些函数。
感谢帮助!
有什么想法,为什么会发生这种情况?我通常认为Chrome会对代码更加宽容。
$(document).keypress(function(e) {
if(e.keyCode == 39) rightImage();
if(e.keyCode == 37) leftImage();
});
这就是我的键盘按键的样子。我有什么遗漏吗?rightImage(); 和 leftImage(); 是可以工作的函数,因为我在其他地方也使用了这些函数。
感谢帮助!
将keypress
改为keydown
:
$(document).keydown(function(e) {
if(e.keyCode == 39) rightImage();
if(e.keyCode == 37) leftImage();
});
当按下键盘上的键时,会触发keydown事件,随后紧接着会触发keypress事件。松开键时,会生成keyup事件。
为了理解keydown和keypress之间的区别,了解"字符"和"键"的区别很有用。 "键"是计算机键盘上的物理按钮,而"字符"是通过按按钮来键入的符号。理论上,keydown和keyup事件表示按下或释放键,而keypress事件表示键入字符。但是实现这一理论在所有浏览器中并不相同。
在这里找到了答案:http://api.jquery.com/keypress/
“如果你想在Chrome中使用箭头、删除和退格键,你必须使用keydown。这些键的keypress只在Firefox和Opera中有效。”
你的代码在IE8中对我不起作用(在FF中有效),所以我将keypress改为keydown。现在在IE中可以工作了。我没有Chrome来测试。
是的,这可以通过将onkeypress
事件更改为onkeydown
来实现。此外,在您想要在空格键上触发事件时,仅在Internet Explorer的情况下存在此问题。