[Chrome拡張] ツールバーのアイコンをクリックしてHTMLページを表示する方法

Chromeブラウザのツールバーに表示されるChrome拡張のアイコンをクリックして
用意したHTMLページを表示する方法を紹介します。

:::note info
新しく作成したchrome拡張を公開しました。
そこで使用した技術を備忘録として共有できればと思い、記事を書いています。
[こちらがそのChrome拡張の記事です。ご興味があれば](https://qiita.com/doran/items/8c3ca80de3f149dce0e0)

[こちらは別のChrome拡張の記事です。合わせてどうぞ](https://qiita.com/doran/items/6613ea2d92b330bae2c9)
:::
#### 使用するファイル
```
root/
 　├ manifest.json
 　├ menu.html
 　├ js/
 　│　　 └  background.js
 　└ images/
 　   ├ icon32.png
    　└ icon48.png
```
#### menu.html
まずは、アイコンをクリックした際に表示させるHTMLページを用意します。
今回は、「manifest.json」と同じ階層に「menu.html」を作成しました。
```html
<!DOCTYPE HTML>
<html lang="ja">
<head>
  <meta charset="utf-8" />
  <title>メニューテスト</title>
</head>
<body>
  <div>右上のアイコンをクリックするとmenu.htmlが開かれます。</div>
</body>
</html>
```

#### manifest.json
次にmanifest.jsonの設定です。
今回の目的のみだと、これくらいの記述で十分です。
```json
{
  "name": "メニュー表示テスト",
  "version": "1.00",
  "description": "メニュー表示テスト",
  "permissions": [],
  "background": {
    "service_worker": "js/background.js"
  },
  "action": {
    "default_icon": {
      "32": "images/icon32.png"
    }
  },
  "icons": {
    "48": "images/icon48.png"
  },
  "manifest_version": 3
}
```

・permissions
　　メニューを表示するだけなら不要です。
・background
　　backgroundで実行されるjsを指定します。
・action - default_icon
　　ツールバーに表示されるアイコンを指定します。
・icons
　　menu.htmlのファビコンを指定します。


#### background.js
最後に「background.js」を用意します。
今回は、「manifest.json」と同じ階層に「js」フォルダを作成して、
その中に「background.js」を作成しました。
ツールバーに表示されるアイコンをクリックしたらmenu.htmlを新しいタブで開きます。
```js
chrome.action.onClicked.addListener(function(){
  chrome.tabs.create({"url": "menu.html"});
});
```
・chrome.action.onClicked.addListener
　　ツールバーに表示されるアイコンをクリックした際に呼ばれるイベントです。
・chrome.tabs.create({"url": "menu.html"})
　　menu.htmlを新しいタブで開きます。

#### 実行結果
ツールバーのアイコンをクリックすると
![スクリーンショット 2023-06-18 12.26.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/1ad3e272-b404-fa1d-57f4-ba7347a67207.png)
用意したmenu.htmlが表示されました。
![スクリーンショット 2023-06-18 12.55.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/79c0464f-5399-eee0-1c7a-ec052fe1d2e4.png)
おしまい。。。
#### その他のChrome拡張の実装方法
以下はこれまでに投稿したChrome拡張の記事です。用途に応じてご覧ください。
[[Chrome拡張]　ツールバーのアイコンをクリックしてHTMLページを表示する方法](https://qiita.com/doran/items/743f687eb413c41432e1)
[[Chrome拡張]　Chrome拡張メニューからページを操作する方法](https://qiita.com/doran/items/9203789b570632e2456e)
[[Chrome拡張]　Webページ(content scripts)からChrome拡張画面へメッセージを送る方法](https://qiita.com/doran/items/faf21f816b168606cfbe)
[[Chrome拡張]　Chrome拡張画面でタイマー(定期実行処理)を使用する方法](https://qiita.com/doran/items/c2c5c225691fd423b2e6)
[[Chrome拡張]　Content Scriptsでタイマー(定期実行処理)を使用する方法](https://qiita.com/doran/items/2620b2c8f2ac2c5548b6)
[[Chrome拡張]　Chrome拡張メニューからWebページを操作する方法](https://qiita.com/doran/items/8045701ba688f50d6295)
[[Chrome拡張]　Chrome拡張メニューからWebページを操作する方法(jQueryを使う)](https://qiita.com/doran/items/817432932bf77c781002)
[[Chrome拡張]　Chrome拡張メニューとWebページでやりとりする方法](https://qiita.com/doran/items/7ccf10bb310ab46478d4)
[[Chrome拡張]　Chrome拡張メニューとWebページでやりとりする方法(Content Scriptsを使う)](https://qiita.com/doran/items/e69ba19cbd2f5049bc97)
[[Chrome拡張]　Chrome拡張メニューから開いていないWebページの情報を取得する方法](https://qiita.com/doran/items/c2d3249c53b97ddeed0d)
[[Chrome拡張]　ポップアップメニューを表示する方法](https://qiita.com/doran/items/6684c939c5dc2b9d091a)
[[Chrome拡張]　ポップアップメニューからWebページを操作する方法](https://qiita.com/doran/items/c34be1c03353a02cd04f)
[[Chrome拡張]　ポップアップメニューからWebページを操作する方法(jQueryを使う)](https://qiita.com/doran/items/6b7181e369cd1be7dfc4)
[[Chrome拡張]　ポップアップメニューからWebページを操作する方法(スタイル変更)](https://qiita.com/doran/items/00ea4f88862031811ed4)
[[Chrome拡張]　ストレージ(chrome.storage.local)を利用する方法](https://qiita.com/doran/items/38a89bcaf4b89c758725)
[[Chrome拡張]　オプションページを表示する方法](https://qiita.com/doran/items/8154f96c200b73bb9e38)