По сути, я использую плагин jQuery Hotkeys от Mr Resig для захвата и обработки таких сочетаний клавиш, как ctrl+o
и т.д...
Хорошо, может быть, я не понимаю эту концепцию, но у меня сложилось впечатление, что ctrl+o
инициированный в любом месте внутри документа будет захвачен обработчиком горячих клавиш документа.
Например, следующий код работает в целом...
jQuery(document).bind('keydown', 'ctrl+o', fn);
Однако он с треском проваливается, если пользователь нажимает горячую клавишу, находясь внутри поля ввода.
Это работает только в том случае, если я делаю следующее:
jQuery('body, input').bind('keydown', 'ctrl+o', fn);
Что довольно плохо для моего здоровья, поскольку включает в себя привязку проклятого обработчика каждый раз, когда в DOM добавляется новое поле ввода. Что еще хуже, я понятия не имею, к чему привязываться в случае сложных виджетов, таких как CodeMirror.
Не знаю, имеет ли смысл моя проблема, возможно, я использую неправильный подход? Я также пытался выполнить привязку к следующим объектам, но это не сработало :window
, document
, body
,div[contains the whole page]
NB:Вы можете попробовать это здесь .