Ярлык клавиатуры для переключения (скрыть/показать) мое расширение Chrome

Я работаю над расширением, я хочу, чтобы мое расширение Chrome переключалось (показывалось/скрывалось) с помощью команды, например (mac: «CMD+SHIFT+9» или по умолчанию: «Ctrl+Shift+9»); Хотя я определил команду в своем файле манифеста:

{
  ......... 
  "commands": {
    "toggle-window": {
      "suggested_key": {
        "default": "Ctrl+Shift+9",
        "mac": "Command+Shift+9"
      },
      "description": "Toggle feature foo",
      "global": true
    },
    ........
 }

Теперь, что я могу сделать в моем backgroundScript.js, чтобы сделать это?

мой backgroundScript.js:

chrome.commands.onCommand.addListener(function(command) {
  if(command === "toggle-window") {
      console.log('Command:', command);
      /* Logic to show/hide will go here..*/
  }
});

Как мне это сделать? Спасибо!

Пример демонстрации расширения, в котором реализована эта функция «показать/скрыть»:

https://chrome.google.com/webstore/detail/meldium-browser-extension/fdocegmnehjgfhfjelhmaobjccoiklle


person narainsagar    schedule 21.09.2015    source источник
comment
Когда я впервые увидел это в очереди на проверку сортировки, я подумал, что это выглядит как достойный вопрос... но когда я читал, я увидел эту фразу: Дайте мне код, пожалуйста.... Не делайте этого. Мы здесь не для того, чтобы писать код за вас, но мы будем рады помочь ответить на любые ваши конкретные вопросы.   -  person JNYRanger    schedule 21.09.2015
comment
Я предполагаю, что вы хотите, по поведению этого расширения ... для этого вам не нужна какая-либо логика в вашем фоновом сценарии. Просто используйте _execute_browser_action вместо toggle-window в вашем файле манифеста, chrome выполнит эту функцию за вас. Прочтите это.   -  person cviejo    schedule 21.09.2015
comment
Спасибо за ответ, однако, я не хотел, чтобы вы давали мне точный код, я имею в виду, просто дайте мне основную идею, хотя я пытаюсь сделать то, что вы описали, и дам вам знать об этом .. Спасибо   -  person narainsagar    schedule 22.09.2015
comment
Я попробовал это _execute_browser_action в моем файле манифеста. Это не работает на моей стороне.   -  person narainsagar    schedule 22.09.2015
comment
Также я тестирую его локально в режиме разработки!   -  person narainsagar    schedule 22.09.2015
comment
@CViejo Я решил это! Вы были правы, используя _execute_browser_action, chrome прекрасно справляется с этой функцией для нас... Спасибо, приятель!   -  person narainsagar    schedule 22.09.2015


Ответы (1)


После долгих исследований я, наконец, решил эту проблему. Прежде всего, благодаря @CViejo, он дал мне намек на проблему:

«Просто используйте «_execute_browser_action» вместо «toggle-window» в вашем файле манифеста, Chrome будет обрабатывать эту функцию за вас.

Я обновил свой файл manifest.js следующим образом, как сказал @CViejo:

{
  ......... 
  "commands": {
    "_execute_browser_action": {
      "suggested_key": {
        "default": "Ctrl+Shift+9",
        "mac": "Command+Shift+9"
      }
    }
    ........
 }

затем я перезагрузил свое расширение, но оно все еще не работало.. затем я просто нашел поле быстрые клавиши в нижней части страницы расширений, я прочитал об этом в Интернете, это в основном помогает нам «проверить что предлагаемые клавиши фактически установлены там в поле «Сочетания клавиш», которые определены в файле манифеста». я установил флажок сочетания клавиш, ключ не был установлен, даже если ключ был доступен и определен в манифесте.

А затем из переполнения стека я нашел это (это была серьезная ошибка): https://stackoverflow.com/a/25654514/5228251

Как видно из исходного кода здесь: https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/extensions/api/commands/command_service.cc&l=303&sq.=package:chromium&rcl=1409677023

Обновление привязки ключа запускается только при запуске обратного вызова OnExtensionWillBeInstalled.

Поэтому вам нужно удалить и переустановить локальное расширение, чтобы увидеть команду клавиатуры по умолчанию в: chrome://extensions/configureCommands

Я только что удалил и переустановил свое распакованное расширение и проверил, что команда клавиатуры по умолчанию отображается в chrome://extensions/configureCommands.

И это начало работать в моем расширении...

Большое спасибо @CViejo и @Stephane Brillant...

Пусть это поможет и другим.....

person narainsagar    schedule 22.09.2015
comment
Я пытаюсь удалить/переустановить последнюю версию с распакованным расширением прямо сейчас и ничего не получаю. Интересно, изменилось ли это (или я упустил что-то еще)? - person MrColes; 09.05.2016
comment
ОБНОВЛЕНИЕ: похоже, что я потенциально сталкивался с этой проблемой (пробовал Ctrl+Shift+P) — «*Некоторые сочетания клавиш Chrome (например, управление окнами) всегда имеют приоритет над сочетаниями клавиш Extension Command и не могут быть перезаписаны. ” developer.chrome.com/extensions/commands — работает, когда я использую другой ключ. - person MrColes; 09.05.2016
comment
@MrColes Да, вы абсолютно правы. Ваш пользовательский ярлык должен отличаться от стандартных (предустановленных) Chrome! :недурно - person narainsagar; 09.05.2016