Chrome拡張機能でアクションボタン(ツールバーのボタン)をクリックした時の挙動を作る
Chrome拡張機能を作る時、アクションボタン(ツールバーにある拡張機能のアイコンのボタン) をクリックした時に、新しいタブでアプリが表示される、という拡張機能を作りたい。
この記事では、その手順をまとめていく。
manifest.jsonにweb_accessible_resourcesを追加。
まず、アクションボタンをクリックした時の挙動を設定するために
manifest.json
に以下を追加する。
web_accessible_resources
とは、拡張機能に含まれているファイル(この例ではmemo.html
)
をwebからアクセスできるように設定するもの。
これを設定することで、拡張機能に含まれているファイルを、urlを通して アクセスできるようになる。
"web_accessible_resources": [
{
"resources": ["memo.html"],
"matches": ["<all_urls>"]
}
]
resources
はwebアクセスを許可するファイルを指定し、matches
はどのページからアクセスしてよいかを指定するもの。
例えば、chrome拡張で簡単なメモアプリを作りたい、という場合だと、どのwebサイトからでもアクセスしたいので<all_urls>
と指定するとよい。
詳細は以下の参考記事が詳しい。
- Manifest - Web Accessible Resources | Chrome Extensions | Chrome for Developers
- web_accessible_resources - Mozilla | MDN
background.js でアクションボタンをクリックした挙動を指定する。
manifest.json
に以下を追加しよう。background
とservice_worker
を追加することで、
その拡張機能のバックエンド側の処理を行ってくれる。
"background": {
"service_worker": "background.js"
},
そして、background.js
を作成して以下のように書く。
chrome.action.onClicked.addListener((tab) => {
chrome.tabs.create({ url: chrome.runtime.getURL("memo.html") });
});
それぞれのChrome APIについては、なんとなく理解できる。また、上記の例では
minifest.json
と同じディレクトリ階層にmemo.html
を入れること。
詳細は以下の公式ドキュメントに記載されている。
- chrome.runtime | API | Chrome for Developers
- chrome.action | API | Chrome for Developers
- chrome.tabs | API | Chrome for Developers
参考文献
今回紹介した公式ドキュメントを改めてまとめる。