Команды
| Тип | Object |
|---|---|
| Обязательно | Нет |
| Версия манифеста | 2 или выше |
| Пример | "commands": { "toggle-feature": { "suggested_key": { "default": "Ctrl+Shift+Y", "linux": "Ctrl+Shift+U" }, "description": "Send a 'toggle-feature' event" } } |
Используйте ключ commands для определения одного или нескольких сочетаний клавиш для вашей расширения.
Каждое сочетание клавиш определяется с помощью имени, сочетания клавиш и описания. После определения команд в manifest.json расширения вы можете прослушивать связанные сочетания клавиш с помощью JavaScript API commands.
Синтаксис
Ключ commands представляет собой объект, а каждое сочетание клавиш является его свойством. Имя свойства — это имя сочетания клавиш.
Значение каждого сочетания клавиш — это объект с двумя свойствами:
-
suggested_key: сочетание клавиш, активирующее сочетание. -
description: строка, описывающая сочетание клавиш; то есть, что оно делает.
Свойство suggested_key — это объект с любыми из следующих свойств (все строки):
"default""mac""linux""windows""chromeos""android""ios"
Значение каждого свойства — это сочетание клавиш для команды на данной платформе, представленное строкой, содержащей клавиши, разделенные "+". Значение для "default" используется на всех платформах, которые не указаны явно.
Например:
"commands": { "toggle-feature": { "suggested_key": { "default": "Alt+Shift+U", "linux": "Ctrl+Shift+U" }, "description": "Send a 'toggle-feature' event to the extension" }, "do-another-thing": { "suggested_key": { "default": "Ctrl+Shift+Y" } } }
Этот JSON определяет 2 сочетания клавиш:
-
"toggle-feature", доступное с помощью Ctrl + Shift + U в Linux и Alt + Shift + U на всех остальных платформах. -
"do-another-thing", доступное с помощью Ctrl + Shift + Y на всех платформах.
Затем вы можете прослушивать команду "toggle-feature" с помощью такого кода:
browser.commands.onCommand.addListener((command) => { if (command === "toggle-feature") { console.log("Toggling the feature!"); } });
Специальные сочетания клавиш
Существует 4 специальных сочетания клавиш с действиями по умолчанию, для которых событие commands.onCommand не срабатывает:
-
_execute_browser_action: работает как щелчок по кнопке панели инструментов панели инструментов, созданной с помощьюbrowserActionили указанной в ключе browser_action в манифесте manifest.json. -
_execute_action: работает как щелчок по кнопке панели инструментов панели инструментов, созданной с помощьюactionили указанной в ключе action в манифесте manifest.json. -
_execute_page_action: работает как щелчок по кнопке адресной строки адресной строки, созданной с помощьюpageActionили указанной в ключе page_action в манифесте manifest.json. -
_execute_sidebar_action: открывает боковую панель расширения, указанную в ключе sidebar_action манифеста manifest.json.
Доступность этих специальных сочетаний клавиш варьируется в зависимости от версии манифеста и браузера, как показано ниже:
| Манифест V2 | Манифест V3 | |
|---|---|---|
_execute_browser_action | Да | Нет |
_execute_action | Нет | Да |
_execute_page_action | Да | Недоступно в браузерах на основе Chromium |
_execute_sidebar_action | Только Firefox | Только Firefox |
Например, этот JSON определяет сочетание клавиш, которое щелкает по кнопке расширения в браузере:
"commands": { "_execute_browser_action": { "suggested_key": { "default": "Ctrl+Shift+Y" } } }
Значения сочетаний клавиш
Существуют два допустимых формата для сочетаний клавиш: как сочетание клавиш или как медиа-клавиша.
Сочетания клавиш
Примечание: На компьютерах Mac "Ctrl" интерпретируется как "Command", поэтому, если вам действительно нужно "Ctrl", укажите "MacCtrl".
Сочетания клавиш должны состоять из 2 или 3 клавиш:
-
модификатор (обязательно, за исключением функциональных клавиш). Может быть любым из:
"Ctrl","Alt","Command", или"MacCtrl". -
вторичный модификатор (необязательно). Если указан, он должен быть либо
"Shift", либо (для Firefox ≥ 63) любым из"Ctrl","Alt","Command", или"MacCtrl". Не должен совпадать с уже используемым основным модификатором. -
клавиша (обязательно). Может быть любой из:
- букв
A–Z - цифр
0–9 - функциональных клавиш
F1–F12 -
Comma,Period,Home,End,PageUp,PageDown,Space,Insert,Delete,Up,Down,Left,Right
- букв
Затем клавиша указывается как строка, содержащая значения клавиш в указанном порядке, разделенные "+". Например, "Ctrl+Shift+Z".
Если сочетание клавиш уже используется браузером (например, "Ctrl+P") или существующим дополнением, то его нельзя переопределять. Вы можете его определить, но обработчик событий не будет вызван при нажатии пользователем этого сочетания.
Медиа-клавиши
В качестве альтернативы сочетание клавиш может быть указано как одна из следующих медиа-клавиш:
"MediaNextTrack""MediaPlayPause""MediaPrevTrack""MediaStop"
Обновление сочетаний клавиш
Сочетания клавиш можно обновить с помощью commands.update(). Пользователи также могут обновлять сочетания клавиш в опции «Управление сочетаниями клавиш расширения» в about:addons в Firefox, как показано на этом видео. В Chrome пользователи могут изменить сочетания клавиш в chrome://extensions/shortcuts.
Пример
Определите одно сочетание клавиш, используя только стандартное сочетание:
"commands": { "toggle-feature": { "suggested_key": { "default": "Ctrl+Shift+Y" }, "description": "Send a 'toggle-feature' event" } }
Определите два сочетания клавиш, одно с сочетанием клавиш, специфичным для платформы:
"commands": { "toggle-feature": { "suggested_key": { "default": "Alt+Shift+U", "linux": "Ctrl+Shift+U" }, "description": "Send a 'toggle-feature' event" }, "do-another-thing": { "suggested_key": { "default": "Ctrl+Shift+Y" } } }
Совместимость с браузерами
| Рабочий стол | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
F1-F12 |
Да | 79 | 53 | ? | Да | 14 | ? | ? | Нет | ? | 15 | ? |
MediaNextTrack |
Да | 79 | 57["Поддержка macOS требует функцию командыglobal, которая пока не поддерживается. См. Отчёт 1251795.", "Можно зарегистрировать только одну команду Media*. См. Отчёт 1251795."] |
? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
MediaPlayPause |
Да | 79 | 57["Поддержка macOS требует функцию командыglobal, которая пока не поддерживается. См. Отчёт 1251795.", "Можно зарегистрировать только одну команду Media*. См. Отчёт 1251795."] |
? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
MediaPrevTrack |
Да | 79 | 57["Поддержка macOS требует функцию командыglobal которая пока не поддерживается. См. Отчёт 1251795.", "Можно зарегистрировать только одну команду Media*. См. Отчёт 1251795."] |
? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
MediaStop |
Да | 79 | 57["Поддержка macOS требует функцию командыglobal которая пока не поддерживается. См. Отчёт 1251795.", "Можно зарегистрировать только одну команду Media*. См. Отчёт 1251795."] |
? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
MoreSecondaryModifiers |
Нет | Нет | 63 | ? | Нет | 14 | ? | ? | Нет | ? | 15 | ? |
commands |
Да | 79 | 48 | ? | Да | 14Изменение сочетания клавиш для команды не поддерживается. |
? | ? | Нет | ? | 15Изменение сочетания клавиш для команды не поддерживается. |
? |
_execute_sidebar_action |
Нет | Нет | 54 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
global |
Да | 79 | Нет | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands