chrome拡張でmanifest.jsonでdefault_popupが指定されているとchrome.browserAction.onClicked.addListenerは無効化される

この問題で久しぶりにドハマりしてしまったのでメモしておきます。

chrome拡張を作成時に「拡張機能のアイコンをクリックしたら◯◯」のようなアクションを設定しようとしたのですが、うまくイベントが発火してくれない問題に悩まされていたのですが、原因はタイトルの通り、manifest.jsonに”default_popup”が指定されているとchrome.browserAction.onClicked.addListenerは無効化されるという仕様のせいでした。

manifest.json

"browser_action" : {
    "default_icon" : "icon.png",
    "default_title" : "title",
    "default_popup" : "popup.html"//これが設定されていると無効化される
}

つまり、popup.htmlとchrome.browserAction.onClicked.addListenerの併用はできないので、それっぽいモノを作りたい場合は別の方法(popup.htmlの読み込み時で対応するなど)で実現するしかなさそうです。

最近は自分で書いたコードの不整合によるバグではなく、こういったそもそもの仕様を知らなくてドハマりするケースが多いです・・・。