Как стать автором
Обновить

Обработка горячих клавиш при помощи javascript

Чулан
Захотелось мне в своем проекте использовать горячие клавиши для управления содержимым. Нажал esc — закрылось диалоговое окно, ctrl+left — открылся следующий раздел… Порылся в гуглях-яндексах и, не найдя идеала, решил написать свое решение.
Теперь оно у меня есть — маленькое, легкое, независимое от от других библиотек.
Мне достаточно подключить javascript-файл и написать
$e('ctrl esc').bind("alert('Ыыы');");

Готовый javascript можно взять здесь.
UPD Улучшен код. Спасибо, Yeah, aubt.

Подробнее о возможностях


Функция $e()


$e(param0 [[, param1 [, param2… ] ] )
Функция принимает список горячих клавиш (независимые от регистра, через пробелы или "+"), на которые вы хотите повесить действие.
Понимает: alt, shift, ctrl, meta, esc, enter, up, down, left, right, tab, space, pageup, pagedown, home, end, буквы латинского алфавита (a-zA-Z), цифры (0-9), символьные коды (10-128);
Кроме того, есть специальные слова keyup, keydown, keypress, которые указывают на какое действие реагировать (по-умолчанию — keyup).
Необходимо помнить, что браузеры могут вызывать или не вызывать события в зависимости от его типа.
Возвращает контекст.

Примеры:
$e('esc')
$e('keyup Ctrl+left', 'meta left keyup')



Функция .bind()


.bind(param)
Пинимает функцию или javascript, который назначится сочетанию клавиш, переданным функцией $e().

Примеры:
$e('esc').bind('alert("!")')
$e('keyup Ctrl+left', 'meta left keyup').bind(do_foo)



Функция .unbind()


.unbind([param])
Отвязывает действие от сочетания клавиш, переданного функцией $e().
Если параметр пустой, то от этого сочетания отвяжутся все действия.

Пример:
$e('esc', 'keyup Ctrl+left', 'meta left keyup').unbind()


Функция $e.start()


Запускает прослушивание клавиш.
Послушивание также включается само, при использовании функции .bind().

Функция $e.stop()


Останавливает прослушивание клавиш.

* This source code was highlighted with Source Code Highlighter.
Теги: javascripthotkeys
Хабы: Чулан
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 12
Комментарии Комментарии 12

Похожие публикации

Лучшие публикации за сутки