Javascript(JQuery)键盘劫持问题

时间:2010-04-17 15:13:18

标签: jquery keydown

我正在使用javascript制作打字导师程序。一切顺利,除非激活浏览器热键,这会破坏程序的功能。当我按下Firefox中的单引号时,它会触发“快速查找(仅限链接)”快捷方式,而在所有浏览器中,当我按空格键时,页面向下滚动页面。除此之外,一切都很好。这是头脑中的代码:

<script type="text/javascript">
$(document).ready(function() {
    executeType();
});
</script>

我用来捕获键盘的代码(简化但经过测试):

function executeType() {
    $(document).keydown(function(event) {
           alert(event.keyCode);
    });
}

1 个答案:

答案 0 :(得分:0)

如果你想让按键停止正常的默认行为,你应该从事件处理程序中return false

您选择并执行某些操作的按键,您应该取消默认操作。但是,请注意不要过度阻止,例如用户可能希望继续用于浏览器快捷方式的ctrl-key组合。

$(document).keypress(function(event) {
    if (event.ctrlKey || event.altKey || event.metaKey)
        return;
    // do something with keypress
    return false;
});

(这仍然会阻止单键操作,例如页面向上/向下和F5到刷新,这不是很好。您通常会查看密钥代码以仅检测您想要处理的密钥自己,让剩下的通过。旁白:我在这里使用了按键而不是keydown,因为Opera不支持阻止keydown上的默认操作。)