IHOR.DEVБАЗА_ЗНАНЬ
МЕНЮ

~/blog / Розширення / keyboard-shortcuts-for-chrome-extensions.md

// посібник · 3 хв читання

Клавіатурні скорочення для розширень Chrome

Оголосіть команди Chrome, розрізняйте _execute_action й власні обробники, перевіряйте непризначені скорочення та зберігайте альтернативну кнопку.

Коротка відповідь

Оголосіть команду в manifest.json і обробляйте власні назви слухачем верхнього рівня воркера. Використовуйте зарезервовану _execute_action, якщо скорочення має виконувати кнопку браузера; вона не викликає commands.onCommand. Запропоноване скорочення — запит типової прив’язки, а не гарантія.

Збережіть видиму альтернативу. Користувач може змінити чи видалити прив’язку, інше розширення — зайняти її, а ОС — мати пріоритет. Інструмент дослідження має працювати з панелі навіть без скорочення.

Практичні кроки реалізації

  1. Виберіть назву й опис завдання, наприклад read-page-title. Не описуйте лише клавіші, бо користувач може їх змінити.
  2. Дотримуйтеся синтаксису й платформних правил. На macOS Ctrl зазвичай стає Command; за потреби задайте платформне значення. Ctrl+Alt заборонено для уникнення конфліктів AltGr. Не обіцяйте перевизначення зарезервованої ОС чи браузером комбінації.
  3. Розрізняйте скорочення кнопки й власну команду. За налаштованого вікна _execute_action відкриває його. Власна команда викликає слухач, який визначає дію й обробляє відсутні дані вкладки.
  4. Перевіряйте commands.getAll() і показуйте фактичну прив’язку в довідці. Порожнє скорочення означає непризначене; спрямовуйте до chrome://extensions/shortcuts замість видавання пропозиції маніфесту за активну.
  5. За можливості використовуйте одну поведінку для кнопки й скорочення. Повторне натискання не має дублювати накладки. Скорочення може бути викликом activeTab, але обмеження захищених сторінок залишаються.

Font Picker ілюструє вузьке завдання, а не підтверджену реалізацію скорочення. Визначте, чи воно відкриває керування або відразу починає дослідження; користувач не має вгадувати за незрозумілою назвою.

Приклад реалізації

Фрагмент оголошує власну команду. Додайте activeTab, scripting і точку входу воркера. Обробник показує обмежений заголовок у консолі; повний продукт має також доступно показати результат чи відмову в UI.

{
  "commands": {
    "read-page-title": {
      "suggested_key": { "default": "Ctrl+Shift+Y", "mac": "Command+Shift+Y" },
      "description": "Read the current page title"
    }
  }
}
chrome.commands.onCommand.addListener((command, tab) => {
  if (command !== "read-page-title" || !Number.isInteger(tab?.id)) return;
  chrome.scripting.executeScript({
    target: { tabId: tab.id },
    func: () => document.title.slice(0, 200),
  }).then(([frame]) => console.log(frame?.result)).catch(console.error);
});

Перевірте призначену комбінацію після встановлення та зміни користувачем. Цей шлях потребує результату для забороненої сторінки; клавіші не усувають обмеження впровадження.

Компроміси та альтернативи

Скорочення кнопки підходить наявному керуванню, власна команда — чіткій прямій дії. Глобальні команди впливають на інші застосунки й мають суворіші правила; додавайте їх лише за потреби роботи без фокуса Chrome.

Поширені помилки

  • Слухати _execute_action через onCommand.
  • Показувати запропоновану комбінацію гарантовано активною.
  • Приховувати конфлікти без альтернативної кнопки.
  • Замінювати команду розширення слухачем keydown сторінки.

Контрольний список випуску

  • Описи називають завдання.
  • Фактичні прив’язки перевірені, непризначені пояснені.
  • Кнопка й клавіші узгоджені.
  • Захищені сторінки й повторення передбачувані.
  • Комбінації вручну перевірені на підтримуваних системах.

Поширені запитання

Скільки скорочень можна запропонувати?

Поточна документація допускає максимум чотири пропозиції; додаткові оголошені команди користувач призначає сам.

Чи змінювати вибір користувача?

Не сприймайте типове значення маніфесту як наказ перезаписати вподобання. Покажіть фактичну прив’язку й поясніть зміну.

Яка корисна перевірка випуску?

Встановіть поряд інше розширення з тією самою пропозицією й переконайтеся, що функція доступна без призначеного скорочення.

Первинні джерела

Пов’язані посібники та приклади

Ігор Харчишин

Незалежний full-stack інженер продуктів, який пише посібники з реалізації розширень браузера та сучасних вебпродуктів на основі першоджерел.

Потрібно реалізувати це у вашому продукті?

Перегляньте відповідні приклади продуктів або поділіться контекстом розробки вебзастосунку, розширення Chrome, API чи SaaS.