Можно ли зарегистрировать привязки клавиш из фонового JS расширения Chrome?

У меня есть расширение Chrome для пользовательских сочетаний клавиш, которое в настоящее время регистрирует сочетания клавиш с помощью сценария содержимого. Можно ли вместо этого зарегистрировать их в фоновом JS-файле, вызываемом из background.html? В моих тестах кажется, что зарегистрированные там привязки игнорируются, потому что они идут прямо на страницу.

Если это имеет значение, я использую https://github.com/madrobby/keymaster для создания/прослушивания для привязки клавиш. Например, используя что-то вроде:

key('a', function(){ alert('you pressed a!') });

... в моем файле background.js игнорируется, но он отлично работает, если используется в сценарии содержимого. Есть ли способ прослушивать нажатия клавиш в моем background.js?


person Mike Crittenden    schedule 28.06.2012    source источник
comment
Нет, вы не можете... Как вы, возможно, уже знаете, фоновая страница выполняется на другой странице (даже в другом процессе). И обработчики на основе javascript работают на той странице, на которую они помещены. То, что вы сказали, будет возможно, только если Chrome предоставит некоторый API. Кстати, вы можете проверить функцию привязки клавиш Chrome (экспериментальную) по адресу code.google.com/chrome/extensions/experimental.keybinding.html, хотя и ограничивается только определенное подмножество сочетаний клавиш..   -  person Sai Prasad    schedule 28.06.2012
comment
@SaiPrasad Опубликуйте это как ответ. Приложение: привязки клавиш в сценарии содержимого не будут работать на страницах, к которым невозможно получить доступ с помощью сценариев содержимого, таких как Интернет-магазин Chrome, протоколы, включая, помимо прочего, data:, chrome-extension:, blob:, about:, chrome:, ... (= все, кроме http:, https:, file:).   -  person Rob W    schedule 29.06.2012
comment
@SaiPrasad, не уверен, что вы видели сообщение Роба выше, но, пожалуйста, опубликуйте это как реальный ответ, чтобы я мог пометить его как принятый. Спасибо!   -  person Mike Crittenden    schedule 29.06.2012


Ответы (1)


Нет, ты не можешь...

Как вы, возможно, уже знаете, фоновая страница выполняется на другой странице (даже в другом процессе). И обработчики на основе javascript работают на той странице, на которую они помещены. То, что вы сказали, будет возможно, только если Chrome предоставит некоторый API.

Но вы можете проверить функцию привязки клавиш Chrome (экспериментальную) по адресу http://code.google.com/chrome/extensions/experimental.keybinding.html, хотя он ограничивается только определенным подмножеством сочетаний клавиш.

Как упомянул Роб В., привязки клавиш по дизайну работают только на страницах, где может быть вставлен сценарий контента, который более или менее сводится к http, https и файловым протоколам (хотя я не уверен в файловом протоколе), за исключением Chrome Интернет-магазин

person Sai Prasad    schedule 30.06.2012