Keypress () срабатывает только когда текстовое поле сфокусировано в Firefox? - PullRequest
2 голосов
/ 23 мая 2011
jQuery(document).ready(function ($) {
    $('body').keypress(function (e) {
        alert(e.which);
    });
});

Появится предупреждение при нажатии клавиши в Chrome, но не в Firefox.Однако, если я создаю текстовое поле и фокусирую его, а затем нажимаю клавишу, в Firefox появится предупреждение.(Несмотря на то, что $ ('body') по-прежнему является объектом jQuery.)

Как я могу получить событие, которое будет запущено в Firefox, даже если текстовое поле не сфокусировано?Есть ли обходной путь?Я буду запускать событие, когда в любом месте страницы будет нажата клавиша Enter.

Спасибо, ребята

Ответы [ 2 ]

7 голосов
/ 23 мая 2011

Если у вас нет элементов на странице, браузер может предположить, что элемент <body> (или любой из его потомков) не имеет фокуса.Попробуйте связать ваше событие с документом:

jQuery(document).ready(function ($) {
    $(document).keypress(function (e) {
        alert(e.which);
    });
});
5 голосов
/ 23 мая 2011

@ DarthJDG прав, но вы все равно должны установить фокус на окне, если хотите сразу же после нажатия страницы прослушивать нажатия клавиш.в некоторых случаях браузеры оставляют фокус на адресной строке.поэтому добавьте:

$(window).focus();

после настройки обработчика нажатия клавиш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...