contextMenu не работает в упакованном приложении Chrome

У меня есть упакованное приложение Chrome, и я не могу понять, как добавить к нему contextMenus.

Это мой манифест:

{
  "name": "Dialer",
  "version": "0.1",
  "manifest_version": 2,
  "permissions": [
    "contextMenus",
    "audioCapture"
  ],
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  },
  "icons": {
    "128":"icon_128.png"
  }
}

и это мой background.js:

chrome.app.runtime.onLaunched.addListener(function() {
    chrome.contextMenus.create ({
        title: "%s", 
        contexts: ["all"],
        id: "right-click"
    });
});

Что я делаю не так? Пункт меню не появляется, когда я щелкаю правой кнопкой мыши.

Спасибо


person Ismailp    schedule 07.12.2013    source источник
comment
Какая ошибка возвращается (проверьте chrome.runtime.lastError с помощью обратного вызова)? И какое отношение установка идентификатора имеет к обработке щелчков правой кнопкой мыши?   -  person linstantnoodles    schedule 07.12.2013
comment
Странно то, что я не получаю никаких ошибок в консоли. Идентификатор - это просто то, что я ввел. Когда я запускаю код в консоли, я получаю неопределенное значение.   -  person Ismailp    schedule 07.12.2013
comment
Из документов: обратите внимание, что если во время создания возникает ошибка, вы можете не узнать об этом, пока не сработает обратный вызов создания. Обратный вызов создания является необязательным вторым аргументом для chrome.contextMenus.create: `chrome.contextMenus.create({...}, function() { console.log(chrome.runtime.lastError); });   -  person MatrixFrog    schedule 08.12.2013
comment
@MatrixFrog спасибо за объяснение. Я добавил код в chrome.runtime.lastError и в консоли получаю undefined. Любые идеи?   -  person Ismailp    schedule 08.12.2013


Ответы (1)


Вы можете просмотреть пример приложения Chrome по адресу https://github.com/GoogleChrome/chrome-app-samples/tree/master/context-menu, чтобы понять, как это работает.

Как видите, в окне приложения Chrome появится контекстное меню:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('main.html', {bounds:{ width: 300, height: 300}});
});

chrome.runtime.onInstalled.addListener(function() {
  // When the app gets installed, set up the context menus
  chrome.contextMenus.create({
    title: 'Click on me',
    id: 'contextMenuId',
    contexts: [ 'all' ]
  });
});

Однако, если вы ищете контекстные меню внутри браузера Chrome, вы можете создать расширение Chrome. См. http://developer.chrome.com/extensions/contextMenus.html.

person François Beaufort    schedule 11.12.2013