Event Pagesでchrome.contextMenus

2013-11-03T00:00:00+00:00 Chrome Extension JavaScript

以前作った https://github.com/kinjouj/chrome-extension-twify で説明する

(function() {
  chrome.contextMenus.create({
    "type": "normal",
    "title": "twify",
    "onclick": function(info, tab) {
      // 省略
    }
  });
})();

っていうような感じでやってる訳なんだけれども、manifest.jsonにてbackground.jsのpersistentをfalseにするとどうなるか。結論は動かない

  • Event Pagesの場合、chrome.contextMenus.createにidオプションを指定する必要あり
  • Event Pagesの場合にはonclickは作用しない。っていうかエラーになりchrome.contextMenus.onClickedを使えと怒られる

つまり

(function() {
  chrome.contextMenus.create({
    "id": "twiffy_ctxmenu",
    "type": "normal",
    "title": "twify",
    "contexts": ["page"]
  });
  chrome.contextMenus.onClicked.addListener(function(info, tab) {
    // 省略
  });
})();

というようにしないといけない模様。まぁ普通に https://developer.chrome.com/extensions/contextMenus.html なマニュアルに公式的に書かれているので

supervisord (3) - autostart/autorestart -