自作でChromeの拡張機能を作成する際には、manifest.jsonというファイルを作成する必要があります。このファイルの中では、次のような拡張機能に関する基本的な設定ができます。
- 拡張機能のアイコン
- 使用するJavaScriptファイル
- 拡張機能を有効にするURL
このmanifest.jsonを設定しているときに次のような疑問が出てくる人もいるのではないでしょうか?
困っている人
全部のURLでChrome拡張機能を有効にしたい!でもmanifest.jsonにはどう書けばいいの?
この疑問を解決します。
拡張機能を全ページで有効にするmanifest.jsonの書き方
自作のChrome拡張機能を作る場合、全てのページで有効にするには次のように書きます。
"content_scripts": [{
"matches": ["<all_urls>"],
"js": [
"content.js"
]
}]
重要なのは、2行目の“<all_urls>”という部分です。普通であればmatcheというプロパティには、次のように拡張機能を有効にしたいURLを書きます。
{
"name": "shortcut",
"version": "1.0.0",
"manifest_version": 3,
"description": "Sample Chrome Extension",
"content_scripts": [{
"matches": [
"https://video.unext.jp/*",
"https://www.youtube.com/*",
"https://konsuki.com/*"
],
"js": [
"content.js"
]
}]
}
しかし、ここに全部のURLを書くことは大変です。その代わりに“<all_urls>”を1つ書くことで、全てのURLでその拡張機能を有効にすることができます。
特定のURLが含まれるページで有効にする
次のようにURLの最後に「*」を付けると、特定のURLが含まれている全ページで拡張機能が有効になります。
"matches": [
"https://konsuki.com/*"
],
「*」は「この部分はなんでもいいよ!」という意味です。
そのため上の例のように書くと、「https://konsuki.com/」がURLに含まれている全ページで拡張機能が有効になります。例えば次のようなURLになっているページです。
- https://konsuki.com/
- https://konsuki.com/contact/
- https://konsuki.com/8/
意外にもできない書き方
その部分はなんでもいいという指定ができる「*」は便利ですよね。これを使えば次のような書き方もできそうですよね。
"matches": [
"https://*"
],
でも実はこのように書くと、拡張機能を読み込んだ際に次のようなエラーが出てしまいます。
全てのURLで拡張機能を有効にしたい場合は、“<all_urls>”を使いましょう。
"matches": [
"<all_urls>"
]
コメント