Javascript (JQuery) проблема с захватом клавиатуры - PullRequest
1 голос
/ 17 апреля 2010

Я делаю программу репетитора с использованием javascript.Все идет хорошо, за исключением того, что активирует горячие клавиши браузера, что нарушает функциональность программы.Когда я нажимаю одиночную кавычку в Firefox, она вызывает ярлык «Быстрый поиск (только ссылки)» и во всех браузерах, когда я нажимаю пробел, страница прокручивает страницу вниз.Все отлично работает за пределами этого.Вот код в голове:

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

И код, который я использую для захвата клавиатуры (упрощенный, но протестированный):

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

1 Ответ

0 голосов
/ 17 апреля 2010

Если вы хотите, чтобы нажатия клавиш не имели нормального поведения по умолчанию, вы должны return false из обработчика событий.

Для любых нажатий клавиш, которые вы выбираете и что-то делаете, вы должны отменить действие по умолчанию для. Тем не менее, будьте осторожны, чтобы не перегружать, подбирая такие вещи, как комбинации клавиш Ctrl, которые пользователь, вероятно, захочет продолжать использовать для ярлыков браузера.

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

(Это по-прежнему блокирует действия с одной клавишей, такие как перелистывание страниц вверх / вниз и F5-to-refresh, что не очень хорошо. Обычно вы просматриваете код клавиши, чтобы обнаружить только те клавиши, которые вы хотели обработать себя, пропуская все остальное. За исключением: я использовал здесь нажатие клавиши, а не нажатие клавиши, поскольку Opera не поддерживает предотвращение действия по умолчанию при нажатии клавиши.)

...