我正在使用Ubuntu 10并在Firefox 3.6和Chrome 5中尝试以下代码。
$(document).ready(function(){
$(document).bind("keypress", function(e){
alert("Pressed");
});
});
令人惊讶的是,上面的代码在FF3.6中运行良好。即每按一下按键,我就会收到警报框。
但在Chrome中,我看到了不同的行为。例如,当我按向上/向下翻页,向上/向下箭头/向左键(不幸的是,这些是我迫切想要跟踪的关键事件)时,我没有收到警报框。
有没有人为什么Chrome没有将'keypress'事件绑定到某些键,例如向上/向下翻页,向左/向右箭头?
答案 0 :(得分:5)
onkeypress 事件最初是Internet Explorer的专有事件,后来包含在其他浏览器中但具有不同的实现。 Chrome / Safari仍然适用于Microsoft实施,其中the documentation表示:
自Microsoft Internet Explorer 4.0起,onkeypress事件将触发,可以取消以下键:
字母:A - Z(大写和小写)
数字:0 - 9
符号:! @#$%^& *()_ - + =< [] {} ,. /? \ | '`“〜
系统:ESC,SPACEBAR,ENTER
对于其他键,您应该绑定到 keydown 或 keyup 。
Quirksmode.org compatibility reference州:
当用户按下特殊键(如箭头键)时,浏览器不应触发按键事件。