この翻訳は不完全です。英語から この記事を翻訳 してください。

タイプ

Array
必須か いいえ
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

与えられたパターンにURLがマッチしているページにコンテンツスクリプトをロードすることをブラウザに教えます。

このキーは配列です。それぞれのアイテムは以下の条件を満たすオブジェクトです:

  • 必ずmatchesという名前のキーを含まなければならず、これはスクリプトが読み込まれるURLパターンを指定します
  • jscssというキーを入れてもよく、それはマッチしたページに読み込まれるスクリプトを列挙します
  • その他のプロパティを入れてもよく、それはコンテンツスクリプトがいつどのように読み込まれるか管理します

入れることのできるキーの詳細は下記の表にあります。

名前 説明
all_frames Boolean

true: inject the scripts specified in js and css into all frames matching the specified URL requirements, even if the frame is not the topmost frame in a tab. This does not inject into child frames where only their parent matches the URL requirements and the child frame does not match the URL requirements. The URL requirements are checked for each frame independently.

false: inject only into frames matching the URL requirements which are the topmost frame in a tab.

Defaults to false.

css Array

An array of paths, relative to manifest.json, referencing CSS files that will be injected into matching pages.

Files are injected in the order given, and before the DOM is loaded.

exclude_globs Array An array of strings containing wildcards. See Matching URL patterns below.
exclude_matches Array An array of match patterns. See Matching URL patterns below.
include_globs Array An array of strings containing wildcards. See Matching URL patterns below.
js Array

An array of paths, relative to the manifest.json file, referencing JavaScript files that will be injected into matching pages.

Files are injected in the order given. This means that, for example, if you include jQuery here followed by another content script, like this:

"js": ["jquery.js", "my-content-script.js"]

then "my-content-script.js" can use jQuery.

Files are injected at the time specified by run_at.

match_about_blank Boolean

Insert the content scripts into pages whose URL is "about:blank" or "about:srcdoc", if the URL of the page that opened or created this page matches the patterns specified in the rest of the content_scripts key.

This is especially useful to run scripts in empty iframes , whose URL is "about:blank". To do this you should also set the all_frames key.

For example, suppose you have a content_scripts key like this:

"content_scripts": [
    {
      "js": ["my-script.js"],
      "matches": ["https://example.org/"],
      "match_about_blank": true,
      "all_frames": true
    }
  ]

If the user loads https://example.org/, and this page embeds an empty iframe, then "my-script.js" will be loaded into the iframe.

match_about_blank is supported in Firefox from version 52. Note that in Firefox, content scripts won't be injected into empty iframes at "document_start" even if you specify that value in run_at.

matches Array

An array of match patterns. See Matching URL patterns below.

This is the only mandatory key.

run_at String

This option determines when the scripts specified in js are injected. You can supply one of three strings here, each of which identifies a state in the process of loading a document. The states directly correspond to Document.readyState:

  • "document_start": corresponds to loading. The DOM is still loading.
  • "document_end": corresponds to interactive. The DOM has finished loading, but resources such as scripts and images may still be loading.
  • "document_idle": corresponds to complete. The document and all its resources have finished loading.

The default value is "document_idle".

In all cases, files in js are injected after files in css.

マッチさせる URL パターン

"content_scripts" キーはURLマッチングを元にしてコンテンツスクリプトをドキュメントに添付します: ドキュメントの URL がキーに指定されたものとマッチしたら、スクリプトは添付されます。"content_scripts" 内には指定に使える4つのキーワードがあります:

これらのプロパティにマッチするには、URLは配列内で少なくとも1つの項目にマッチしなれりばなりません。例えばこのようなプロパティが与えられたら:

"matches": ["*://*.example.org/*", "*://*.example.com/*"]

"http://example.org/" と "http://example.com/" の両方がマッチします。

matches は唯一必須のキーなため、その他の3つのキーはそれ以降のマッチURLの制限に使われます。全体のキーにマッチするために、URLは下記のようでなければなりません:

  1.  matches プロパティにマッチしている
  2. かつ、include_globs があれば、それにマッチする
  3. かつ、exclude_matches があれば、それにマッチしない
  4. かつ、exclude_globs があれば、それにマッチしない

globs

glob は単にワイルドカードを含むことのある文字列です。ワイルドカードには2種類あって、glob内に組み合わせることができます:

  • "*" は0個以上のキャラクターにマッチします
  • "?" はちょうど1個のキャラクターにマッチします

例えば: "*na?i""illuminati""annunaki" にマッチし、"sagnarelli" にはマッチしせん

"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

これは "borderify.js" という1つのコンテンツスクリプトを、HTTP か HTTPS のいずれかで配布される、"mozilla.org" かそのサブドメインのページに挿入します。

"content_scripts": [
    {
      "exclude_matches": ["*://developer.mozilla.org/*"],
      "matches": ["*://*.mozilla.org/*"],
      "js": ["jquery.js", "borderify.js"]
    }
  ]

これは2つのコンテンツスクリプトを、HTTP か HTTPS のいずれかで配布される、 "mozilla.org" かそのサブドメイン(ただし "developer.mozilla.org" を除く)のページに挿入します。

コンテンツスクリプトは同じ DOM を見て、配列の順番どおりに挿入されます。よって "borderify.js" からは "jquery.js" によって追加されたグローバル変数が見えます。

ブラウザ実装状況

ChromeEdgeFirefoxFirefox for AndroidOpera
基本サポート 有り1 有り482482 有り1
match_about_blank 有り 有り5252 有り

1. Content scripts are not applied to tabs already open when the extension is loaded.

2. Content scripts won't be injected into empty iframes at 'document_start' even if you specify that value in 'run_at'.

ドキュメントのタグと貢献者

 このページの貢献者: Uemmra3, lv7777
 最終更新者: Uemmra3,