keypress()仅在文本字段集中在Firefox时触发吗?

时间:2011-05-23 02:05:29

标签: javascript jquery html firefox

jQuery(document).ready(function ($) {
    $('body').keypress(function (e) {
        alert(e.which);
    });
});

当在Chrome中按下某个键但在Firefox中没有按键时,会弹出警告。但是,如果我创建一个文本字段并将其聚焦,然后按一个键,Firefox中会弹出一个警告。 (即使$('body')仍然是jQuery对象。)

即使文本字段没有聚焦,我怎样才能在Firefox中触发事件?有解决方法吗?当在页面的任何位置按下Enter键时,我将触发一个事件。

谢谢你们

2 个答案:

答案 0 :(得分:7)

如果页面上没有元素,浏览器可能会认为<body>元素(或其任何后代)没有焦点。尝试将您的活动绑定到文档:

jQuery(document).ready(function ($) {
    $(document).keypress(function (e) {
        alert(e.which);
    });
});

答案 1 :(得分:5)

@DarthJDG是对的,但是如果你想在页面加载后立即监听按键,你仍然应该把注意力集中在窗口上。在某些情况下,浏览器会将焦点放在地址栏上。所以补充:

$(window).focus();
设置按键处理程序后