💡
ポップアップ画面を使わない場合でも action は定義しなければならない
やりたかったことと発生した問題
ポップアップ画面は使わず、拡張機能のボタンを押すとオプションページに移動するような機能を作っていた。バックグラウンドスクリプトでaction.onClicked
にイベントで新しくオプションページのタブを開く処理を書けば動くと思っていた。
bacgkround.js
chrome.action.onClicked.addListener(() => {
chrome.tabs.create({ url: "/src/options/options.html" });
});
しかし下のようなエラーが出てアイコンをクリックしてもオプションページには移動せず、拡張機能を読み込むと次のようなエラーが出るだけだった
Uncaught TypeError: Cannot read properties of undefined (reading 'onClicked')
解決策
manifest.json
に空のaction
キーをつければ解決した。よくよく考えると、ポップアップ画面は使ってなくてもchrome.action.onClicked
でaction
を使っているから、空でもいいからaction
キーをmanifest.json
で定義しなければならなかった。
manifest.json
{
"manifest_version": 3,
"name": "OptionTab",
"version": "1.0.0",
"permissions": ["tabs"],
"background": { "service_worker": "src/background.js" },
+ "action": {}
}
Discussion