コンテキストメニュー項目 - Mozilla

コンテキストメニュー項目
============

このユーザーインターフェイスオプションは、ブラウザーのコンテキストメニューに 1 つ以上の項目を追加します。これはユーザーがウェブページを右クリックした時に利用できるコンテキストメニューです。タブも browser.menus API を通じてコンテキストメニューを持つことができます。

![Example of content menu items added by a WebExtension, from the context-menu-demo example](/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items/context_menu_example.png)

このオプションは、特定のブラウザーやウェブページのコンテキストに関連する機能を公開するために使用します。例えば、ユーザーが画像をクリックしたときにグラフィックエディターを開く機能を表示したり、ページの一部が選択されたときに、ページの内容を保存する機能を提供したりすることができます。メニューには、ただのメニュー項目、チェックボックス項目、ラジオボタングループ、セパレーターを追加することができます。 `contextMenus.create` (en-US) を使ってコンテキストメニュー項目を追加すると、すべてのブラウザータブに表示されますが、 `contextMenus.remove` (en-US) で削除して非表示にすることが可能です。

対応しているコンテキストのすべての一覧は `menus.ContextType` (en-US) にあり、ブラウザー UI のブックマーク項目など、ウェブページ外のコンテキストも含まれます。例えば、"Open bookmark in Container Tab" 拡張機能は、ユーザーがブックマーク URL を新しいコンテナータブで開くことを可能にするメニュー項目を追加します。

![](/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items/extension_context_menu.png)

コンテキストメニュー項目の指定
---------------

コンテキストメニューを、 `contextMenus` (en-US) API を使ってブログラムから管理できます。しかし、この API の恩恵を受けるには、 manifest.json にて `contextMenus` 権限を要求する必要があります。

```json
"permissions": ["contextMenus"]
```

次に、拡張機能のバックグラウンドスクリプト内にコンテキストメニューを追加（および更新、削除）することもできます。メニュー項目を作成するには id、タイトル、表示するコンテキストメニューを指定します。

```js
browser.contextMenus.create(
  {
    id: "log-selection",
    title: browser.i18n.getMessage("contextMenuItemSelectionLogger"),
    contexts: ["selection"],
  },
  onCreated,
);
```

そして、拡張機能はメニュー項目がクリックされるのを待ち受けします。クリックされた項目、クリックされたコンテキスト、クリックされたタブの詳細に関する渡された情報は、適切な拡張機能を呼び出すために使用されます。

```js
browser.contextMenus.onClicked.addListener(function(info, tab) {
  switch (info.menuItemId) {
    case "log-selection":
      console.log(info.selectionText);
      break;
    ...
  }
})
```

アイコン
----

コンテキストメニューで使用するアイコンの作り方の詳細は、 Iconography を Photon Design System のドキュメントで参照してください。

例
-

GitHub の webextensions-examples リポジトリーには、コンテキストメニュー項目を実装した拡張機能の例が 2 つあります。

* menu-demo ではブラウザーのコンテキストメニューにいくつかの項目を追加しています。
* context-menu-copy-link-with-types では、リンクの URL を、プレーンテキストとリッチ HTML としてクリップボードにコピーするコンテキストメニュー項目を追加してます。


アドレスバーボタン - Mozilla

アドレスバーボタン
=========

このユーザーインターフェイスオプションは、ブラウザーのアドレスバーに追加されるボタンで、よくページアクション (en-US)と呼ばれます。ユーザーはボタンをクリックして拡張機能を操作します。

![](/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions/address_bar_button.png)

ページアクションとブラウザーアクション
-------------------

アドレスバーボタン（またはページアクション）は、ツールバーボタン（またはブラウザーアクション）と似ています。

違いは次の通りです。

* **ボタンの位置**
    + ページアクションは、ブラウザーのアドレスバーの中に表示されます。
    + ブラウザーアクションは、ブラウザーのツールバー内で、アドレスバーの外側に表示されます。
* **ボタンの表示の有無**
    + ページアクションは既定で非表示であり（この既定値は `show_matches` および `hide_matches` マニフェストキープロパティで変更できます）、 `pageAction.show()` (en-US) および `pageAction.hide()` (en-US) を呼び出すことで、特定のタブを表示と非表示を切り替えることができます。
    + ブラウザーアクションは常に表示されます。

ページアクションは、現在のページに関連するアクションのときに使用します。ブラウザーアクションは、ブラウザー全体または複数のページに関連するアクションを実行するときに使用します。たとえば、以下のようになります。

| 種別 | ブックマークアクション | コンテンツアクション | タブ操作 |
| --- | --- | --- | --- |
| ページアクション | このページをブックマーク | 再編集の拡張 | タブの送信 |
| ブラウザーアクション | すべてのブックマークの表示 | 広告ブロックの有効化 | すべての開いているタブを同期 |

ページアクションの設定
-----------

ページアクションのプロパティは manifest.json の `page_action` キーで定義します。

```json
"page\_action": {
  "browser\_style": true,
  "default\_icon": {
    "19": "button/geo-19.png",
    "38": "button/geo-38.png"
  },
  "default\_title": "Whereami?"
}
```

唯一不可欠なキーは `default_icon` です。

ページアクションの設定には 2 つの方法があります。ポップアップがあるものと、ないものです。

* **ポップアップがない**場合、ユーザーがボタンをクリックした時に、拡張機能にイベントが配信され、これを拡張機能が `pageAction.onClicked`を使って待ち受けします。

```js
browser.pageAction.onClicked.addListener(handleClick);
```

* **ポップアップがある**場合、クリックイベントは配信されません。その代わりに、ユーザーがボタンをクリックした時にポップアップが表示されます。ユーザーはポップアップを操作することができます。ユーザーがポップアップの外をクリックした場合は、自動的に閉じます。ポップアップを作成したり管理したりすることについての詳細は、ポップアップの記事を参照してください。

なお、拡張機能が持つことができるページアクションは 1 つだけです。

ページアクションのプロパティはすべて、 `pageAction` (en-US)` API を使用してプログラムから変更することができます。

アイコン
----

For details on how to create icons to use with your page action, see Iconography in the Photon Design System documentation.

例
-

GitHub の webextensions-examples リポジトリには、ページアクションを使う拡張機能の例がいくつかあります。 chill-out はポップアップなしのページアクションを使います。


menus - Mozilla

menus
=====

ブラウザーのメニューシステムに項目を追加します。

この API は、Chrome のエクステンションでコンテキストメニューに項目を追加できる機能である"contextMenus" API をモデルにしています。この `browser.menus` API は Chrome の API にいくつかの機能を追加しています。

Firefox 55 より前ではこの API は `contextMenus` という名前でした。その名称は一応エイリアスにしています。そのため `contextMenus` という名称を使って Firefox や他のブラウザでも動くコードを書くことできます。

この API を使用するためには `menus` permission 必要です。 `menus` の代わりにエイリアスの `contextMenus` を使用することができますが、もし使用するのであれば`browser.contextMenus` で API にアクセスしなければなりません。.

この API は`menus.getTargetElement()` (en-US)以外はコンテンツスクリプトからは使用できません。バックグラウンドページからは使えます。

メニューアイテムをつくる
------------

To create a menu item call the `menus.create()` (en-US) method. You pass this method an object containing options for the item, including the item ID, item type, and the contexts in which it should be shown.

Listen for clicks on your menu item by adding a listener to the `menus.onClicked` event. This listener will be passed a `menus.OnClickData` (en-US) object containing the event's details.

You can create four different types of menu item, based on the value of the `type` property you supply in the options to `create()`:

* "normal": a menu item that just displays a label
* "checkbox": a menu item that represents a binary state. It displays a checkmark next to the label. Clicking the item toggles the checkmark. The click listener will be passed two extra properties: "checked", indicating whether the item is checked now, and "wasChecked", indicating whether the item was checked before the click event.
* "radio": a menu item that represents one of a group of choices. Just like a checkbox, this also displays a checkmark next to the label, and its click listener is passed "checked" and "wasChecked". However, if you create more than one radio item, then the items function as a group of radio items: only one item in the group can be checked, and clicking an item makes it the checked item.
* "separator": a line separating a group of items.

If you have created more than one context menu item or more than one tools menu item, then the items will be placed in a submenu. The submenu's parent will be labeled with the name of the extension. For example, here's an extension called "Menu demo" that's added two context menu items:

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/menus-1.png)

アイコン
----

If you've specified icons for your extension using the "icons" manifest key, your menu item will display the specified icon next to its label. The browser will try to choose a 16x16 pixel icon for a normal display or a 32x32 pixel icon for a high-density display:

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/menus-2.png)

Only for items in a submenu, you can specify custom icons by passing the `icons` option to `menus.create()` (en-US):

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/menus-3.png)

例
-

Here's a context menu containing 4 items: a normal item, two radio items with separators on each side, and a checkbox. The radio items are given custom icons.

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/menus-4.png)You could create a submenu like this using code like:

```js
browser.menus.create(
  {
    id: "remove-me",
    title: browser.i18n.getMessage("menuItemRemoveMe"),
    contexts: ["all"],
  },
  onCreated,
);

browser.menus.create(
  {
    id: "separator-1",
    type: "separator",
    contexts: ["all"],
  },
  onCreated,
);

browser.menus.create(
  {
    id: "greenify",
    type: "radio",
    title: browser.i18n.getMessage("menuItemGreenify"),
    contexts: ["all"],
    checked: true,
    icons: {
      16: "icons/paint-green-16.png",
      32: "icons/paint-green-32.png",
    },
  },
  onCreated,
);

browser.menus.create(
  {
    id: "bluify",
    type: "radio",
    title: browser.i18n.getMessage("menuItemBluify"),
    contexts: ["all"],
    checked: false,
    icons: {
      16: "icons/paint-blue-16.png",
      32: "icons/paint-blue-32.png",
    },
  },
  onCreated,
);

browser.menus.create(
  {
    id: "separator-2",
    type: "separator",
    contexts: ["all"],
  },
  onCreated,
);

var checkedState = true;

browser.menus.create(
  {
    id: "check-uncheck",
    type: "checkbox",
    title: browser.i18n.getMessage("menuItemUncheckMe"),
    contexts: ["all"],
    checked: checkedState,
  },
  onCreated,
);
```

型
-

`menus.ContextType` (en-US)

The different contexts a menu can appear in.

`menus.ItemType` (en-US)

The type of menu item: "normal", "checkbox", "radio", "separator".

`menus.OnClickData` (en-US)

Information sent when a menu item is clicked.

プロパティ
-----

`menus.ACTION_MENU_TOP_LEVEL_LIMIT` (en-US)

The maximum number of top level extension items that can be added to a menu item whose ContextType is "browser\_action" or "page\_action".

関数
--

`menus.create()` (en-US)

新しいメニューアイテムをつくります。

`menus.update()` (en-US)

以前に作られたメニューアイテムを更新します。

`menus.remove()` (en-US)

メニューアイテムを削除します。

`menus.removeAll()` (en-US)

この拡張機能によって追加されたすべてのメニューアイテムを削除します。

イベント
----

`menus.onClicked`

メニューアイテムがクリックされたときに発火。

`menus.onHidden` (en-US)

ブラウザがメニューを隠したときに発火。

`menus.onShown` (en-US)

ブラウザがメニューを見せたときに発火。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* menu-accesskey-visible
* menu-demo
* menu-labelled-open
* menu-remove-element
* menu-search
* session-state

**メモ:** This API is based on Chromium's `chrome.contextMenus` API. This documentation is derived from `context_menus.json` in the Chromium code.


storage - Mozilla

storage
=======

拡張機能にデータの保存、取得と、保存項目の変更をリッスンできるようにします。

ストレージのシステムは Web Storage API に基づいていますが、いくつか相違点があります。とりわけ、以下の違いがあります。

* 非同期です。
* 値は拡張機能のスコープで、特定ドメインのスコープではありません (つまりキー/値ペアーの同じ組み合わせが、すべてのバックグラウンドコンテキストとコンテンツスクリプトから利用できます)。
* 保存された値は JSON-ifiable な (JSON 化できる) 値で、単なる `String` ではありません。とりわけ、`Array` と `Object` も、コンテンツが JSON で表現できる時 (DOM ノードは入りません) を除いて不可です。値を保存する前に JSON `Strings` に変換する必要はなく、内部で JSON として表現されます、つまり JSON-ifiable である必要があります。
* 複数のキー/値ペアーが同じ API 呼び出しで設定、取得できます。

この API を利用するためには"storage" permission を manifest.json に含める必要があります。

各々の拡張機能は独自のストレージ領域を持っています。またそれらは異なる型のストレージに分割することができます。

`Window.localStorage`とこの API は似ていますが、拡張機能関連のデータを格納する際に拡張コード内で `Window.localStorage` を使わないことを推奨します。Firefox はプライバシー上の理由で、ブラウザー履歴やデータを消去などをする場合、localStorage API を利用して保存されたデータも消去します。しかし `storage.local` API を利用して保存されたデータはこれらの場合でも保持されます。

**メモ:** ストレージ領域内は暗号化されていないため、ユーザーの機密情報を保存すべきではありません。

型
-

`storage.StorageArea`

ストレージ領域を表すオブジェクト

`storage.StorageChange`

ストレージ領域の変更を表すオブジェクト

プロパティ
-----

`storage` は 3 つのプロパティを持ち、異なる型の利用可能なストレージ領域を表しています。

`storage.sync`

`sync` ストレージ領域を表します。`sync` ストレージ内のアイテムはブラウザーによって同期され、異なるデバイス間でも、ログインしているユーザーのブラウザーのすべてのインスタンスを跨いで利用できるようになります。

`storage.local`

`local` ストレージ領域を表します。`local` ストレージ内のアイテムは拡張機能がインストールされているマシン内のみで扱えます。

`storage.managed` (en-US)

`managed` ストレージ領域を表します。`managed` ストレージ内のアイテムはドメイン管理者によってセットされ、拡張機能は読取権限のみを持ちます。そのため、この名前空間を変更しようとするとエラーになります。

イベント
----

`storage.onChanged` (en-US)

ストレージ領域内のアイテムを 1 つ以上変更した場合に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* annotate-page
* favourite-colour
* forget-it
* navigation-stats
* proxy-blocker
* quicknote
* stored-credentials

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


pkcs11 - Mozilla

pkcs11
======

`pkcs11` API は拡張機能にセキュリティモジュール PKCS #11 の列挙を可能とし、キーの元と証明書としてブラウザーからアクセスできるようにします。

この API を使うには "pkcs11" パーミッションが必要です。

Provisioning PKCS #11 modules
-----------------------------

There are two environmental prerequisites for using this API:

* one or more PKCS #11 modules must be installed on the user's computer
* for each installed PKCS #11 module, there must be a native manifest file that enables the browser to locate the module.

Most probably, the user or device administrator would install the PKCS #11 module, and its installer would install the native manifest file at the same time. Note, though, that the module and manifest can't be installed as part of the extension's own installation process.

For details about the manifest file's contents and location, see Native manifests.

関数
--

`pkcs11.getModuleSlots()` (en-US)

For each slot in a module, get its name and whether it contains a token.

`pkcs11.installModule()` (en-US)

Installs the named PKCS #11 module.

`pkcs11.isModuleInstalled()` (en-US)

Checks whether the named PKCS #11 module is installed.

`pkcs11.uninstallModule()` (en-US)

Uninstalls the named PKCS #11 module.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.


identity - Mozilla

identity
========

identity API を使って OAuth2 の認証コードやアクセストークンを取得し、拡張機能が OAuth2 での認証（Google や Facebook アカウントなど）をサポートするサービスからユーザーデータを取得できるようにします。

OAuth2 フローがどのように機能するかの詳細は、サービスプロバイダーごとに異なるため、特定のサービスプロバイダーにおいてこの API を使用するには、各サービスごとのドキュメントを参照する必要があります。例えば以下の通りです。

* Google
* GitHub

identity API は `identity.launchWebAuthFlow()` (en-US) 関数を提供します。この関数は、必要に応じて、サービスのユーザー認証を行い、また、拡張機能にデータへのアクセスを認可するかどうかをユーザーに確認します。処理が完了すると、プロバイダーによって、アクセストークンか認可コードのどちらかが取得されます。

そして、OAuth2 フローを実施して取得した検証済みアクセストークンを、HTTP リクエスト内で使用することで、拡張機能はユーザーから認可された範囲でデータにアクセスできるようになります。

この API を利用するためには、"identity" API の権限が必要です。

セットアップ
------

拡張機能を公開する前に、いくつかの設定が必要です。

### リダイレクト URL を取得する

リダイレクト URL は、アクセストークンまたは認証コードを拡張機能に配布するための `identity.launchWebAuthFlow()` (en-US) のエンドポイントを意味します。ブラウザーはレスポンスを読み込まずに、リダイレクト URL から結果を展開します。

`identity.getRedirectURL()` を呼び出すことでリダイレクト URL をすることが取得できます。この関数は、アドオン ID からリダイレクト URL を生成するため、使用したい場合、`browser_specific_settings` キーを使用してアドオン ID を明示的に設定する必要があるでしょう（設定しない場合、アドオンを一時的にインストールするたびに、異なるリダイレクト URL を取得することになります）。

`identity.getRedirectURL()` は、修正されたドメイン名とアドオンの ID に由来するサブドメインで URL を返します。OAuth サーバー（Google など）によっては、所有者が確認されたドメインしかリダイレクト URL として受け入れられない場合があります。ダミードメインは拡張機能開発者がコントロールすることができないため、既定では常に使用することができません。

しかし、ループバックアドレスはドメイン検証を必要としない受け入れ可能な代替手段です（RFC 8252, section 7.3 に基づいています）。Firefox 86 からは、`http://127.0.0.1/mozoauth2/[identity.getRedirectURL()]` が返す URL のサブドメイン] という形式のループバックアドレスをリダイレクト URL の値として許可しています。

**メモ:** Firefox 75 からは `identity.getRedirectURL()` が返すリダイレクト URL を使用する必要があります。それ以前のバージョンでは、任意のリダイレクト URL を指定することができました。

Firefox 86 以降は、記述されている特殊なループバックアドレスも使用することができます。

リダイレクト URL は 2 つの場面で利用されます。

* 拡張機能を OAuth2 クライアントとして登録するとき
* `identity.launchWebAuthFlow()` の `url` 引数に URL パラメーターとして渡すとき
### 拡張機能を登録する

サービスプロバイダー経由で OAuth2 を使用する前に、プロバイダーに対して、拡張機能を OAuth2 クライアントとして登録する必要があります。

サービスプロバイダーごとにやり方が異なることがありますが、一般的には、プロバイダーの ウェブサイトにおいて、拡張機能を登録することを意味します。この登録手順の中で、自身のリダイレクト URL を登録し、プロバイダーからクライアント ID (場合によっては、シークレットも) を受け取ります。そして、この両方を `identity.launchWebAuthFlow()` (en-US) に渡す必要があります。

関数
--

`identity.getRedirectURL()`

リダイレクト URL を取得します。

`identity.launchWebAuthFlow()` (en-US)

ウェブ認証フローを開始します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* google-userinfo

**メモ:** この API は Chromium の `chrome.identity` API に基づいています。


privacy - Mozilla

privacy
=======

さまざまなプライバシー関連のブラウザー設定にアクセスや変更を行います。

privacy API を使うには、"privacy" API パーミッションが必要です。

プロパティ
-----

`privacy.network` (en-US)

ネットワーク関連のプライバシー設定にアクセス、編集します。

`privacy.services` (en-US)

ブラウザーやサードパーティのプライバシー設定にアクセス、編集します。

`privacy.websites` (en-US)

ウェブサイトのふるまいに関連したプライバシー設定にアクセス、編集します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** This API is based on Chromium's `chrome.privacy` API.


webRequest - Mozilla

webRequest
==========

websocket が ws:// and wss:// としてリクエストするものも含めた、HTTP リクエスト作成のいろいろなステージでイベントリスナーを追加します。イベントリスナーはリクエストの詳細情報を受け取ったり、リクエストを編集、修正したりします。

それぞれのイベントはリクエストの特定ステージで発火します。イベントの典型的なシーケンスは次のようなものです:

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/webRequest-flow.png)

`onErrorOccurred` (en-US) はリクエストの期間中のあらゆる時に発火します。また注意点としてイベントシーケンスがこれと違うこともあります: 例えば、Firefox では、HSTS 更新の時には、`onBeforeRequest` のすぐ後に `onBeforeRedirect` イベントが発火します。

`onErrorOccurred` を除くすべてのイベントは `addListener()` への次の 3 つの引数を取ります:

* リスナー自身
* `filter` (en-US) オブジェクト、これを使って特定の URL や特定のリソースタイプにリクエストされた時だけに通知を受けられます。
* オプションの `extraInfoSpec` オブジェクト。これを使ってイベントに固有な追加の命令を渡せます。

リスナー関数はリクエストの情報を含む `details` オブジェクトを渡されます。これにはリクエスト ID が入っていて、その ID でアドオンは単一のリクエストとイベントを関連付けられます。これはブラウザーセッションとアドオンのコンテキストごとにユニークです。リダイレクトと認証交換であっても、リクエストを通じて同じ値を保ちます。

あるホストに webRequest API を使うには、拡張機能は "webRequest" API パーミッション とそのホストの host パーミッション を持たねばなりません。「ブロッキング」機能を使うためには、拡張機能は "webRequestBlocking" API 権限も必要です。

ページに読み込まれるリソース (例えば画像、スクリプト、スタイルシート) を中断するには、拡張機能はそのメインページと同様にリソースの host パーミッションも持っている必要があります。例えば、"https://developer.mozilla.org" のページが "https://mdn.mozillademos.org" から画像を読み込む場合、画像のリクエストを中断するには拡張機能は両方の host パーミッションを持たねばなりません。

リクエストを修正する
----------

いくつかのイベントでは、リクエストを修正できます。特に、次のことが可能:

* 次の API でリクエストをキャンセル:
    + `onBeforeRequest` (en-US)
    + `onBeforeSendHeaders` (en-US)
    + `onAuthRequired` (en-US)
* 次の API でリクエストをリダイレクト:
    + `onBeforeRequest` (en-US)
    + `onHeadersReceived` (en-US)
* 次の API でリクエストヘッダーの修正:
    + `onBeforeSendHeaders` (en-US)
* 次の API でレスポンスヘッダーの修正:
    + `onHeadersReceived` (en-US)
* 次の API で認証クレデンシャルの提供:
    + `onAuthRequired` (en-US)

これを行うには、イベント `addListener()` の `extraInfoSpec` の引数に"blocking"の値のオプションを渡す必要があります。これによりリスナーが同期します。このリスナーでは `BlockingResponse` (en-US) オブジェクトを返すことができ、このオブジェクトは加えた修正を指し示します: 例えば、送信したい修正後のリクエストヘッダーなど。

**警告:** Non-HTTP(S) protocols do not currently support `"blocking"` functionality, so modifying these requests is not available at this time. See Firefox バグ 1475832 for more details.

セキュリティ情報へのアクセス
--------------

`onHeadersReceived` (en-US) リスナー内では、`getSecurityInfo()` (en-US) を呼ぶことで TLS にアクセスできます。これを行うには、イベントの `addListener()` の `extraInfoSpec` 引数に"blocking" を渡す必要もあります。

TLS ハンドシェイクについて詳しく読むことができますが、修正したり、ブラウザーのトラストな決定を上書きできません。

レスポンスを修正する
----------

`webRequest.filterResponseData` (en-US) にリクエスト ID を渡すことで得られる `webRequest.StreamFilter` (en-US) を使うと、ブラウザーが受け取った HTTP リクエストのレスポンス本文を検査したり修正したりすることができます。

そのためには、"webRequestBlocking" パーミッションと "webRequest" API パーミッション 、さらに修正したい対象のリクエスト URL にあてはまる host permission 権限を得ている必要があります。

型
-

`webRequest.BlockingResponse` (en-US)

この型のオブジェクトは、イベントリスナーによって `extraInfoSpec` 引数にて`"blocking"` をセットして返されます。`BlockingResponse` プロパティに特定の値をセットすることで、リスナーはネットワークリクエストを変更できます。

`webRequest.CertificateInfo` (en-US)

単一の X.509 証明書を記述するオブジェクト。

`webRequest.HttpHeaders` (en-US)

HTTP ヘッダーの配列。それぞれのヘッダーは 2 つのプロパティを持つオブジェクトで表現されます: `name` と、`value` か `binaryValue` のいずれか。

`webRequest.RequestFilter` (en-US)

webRequest イベントに適用するフィルターを記述するオブジェクト。

`webRequest.ResourceType` (en-US)

ウェブリクエスト内で取得されるリソースの特定の種類を表す。

`webRequest.SecurityInfo` (en-US)

特定のウェブリクエストのセキュリティプロパティを記述するオブジェクト。

`webRequest.StreamFilter` (en-US)

HTTP レスポンスの受信中に、それをモニターしたり修正したりするのに使うオブジェクト。

`webRequest.UploadData` (en-US)

URL リクエスト内でアップロードされるデータを含む。

プロパティ
-----

`webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES` (en-US)

10 分間に `handlerBehaviorChanged()` (en-US) を最大限呼べる回数。

メソッド
----

`webRequest.handlerBehaviorChanged()` (en-US)

このメソッドは、ページがブラウザーのインメモリーキャッシュ内にあるときに、イベントリスナーが確実に呼べるように使われます。

`webRequest.filterResponseData()` (en-US)

あるリクエストに対する `webRequest.StreamFilter` (en-US) オブジェクトを返します。

`webRequest.getSecurityInfo()` (en-US)

あるリクエストに対する TLS コネクションの詳細情報を返します。

イベント
----

`webRequest.onBeforeRequest` (en-US)

リクエストがもうすぐなされて、ヘッダーは利用できないときに発火します。リクエストをキャンセルやリダイレクトしたい場合に、ここをリッスンします。

`webRequest.onBeforeSendHeaders` (en-US)

HTTP データを送信する前だが、HTTP ヘッダーが利用できるときに発火します。HTTP リクエストとヘッダーを修正したい場合に、ここををリッスンします。

`webRequest.onSendHeaders` (en-US)

ヘッダー送信の直前に発火します。あなたや他の人のアドオンが ``onBeforeSendHeaders` (en-US)` でヘッダーを修正した場合、ここでは修正後のバージョンが見えるでしょう。

`webRequest.onHeadersReceived` (en-US)

リクエストに関連する HTTP レスポンスヘッダーを受け取ったときに発火します。HTTP レスポンスヘッダーを修正するのにこのイベントを使用できます。

`webRequest.onAuthRequired` (en-US)

サーバーがクライアントに認証クレデンシャルを要求するときに発火します。このリスナーは何もしないか、リクエストをキャンセルするか、認証クレデンシャルを供給するかのいずれかです。

`webRequest.onResponseStarted` (en-US)

レスポンスボディの最初のバイトを受け取ったときに発火します。HTTP リクエストにとって、これはステータスラインとレスポンスヘッダーが利用可能ということになります。

`webRequest.onBeforeRedirect` (en-US)

サーバーが開始するリダイレクトが起きる直前に発火します。

`webRequest.onCompleted` (en-US)

リクエストが完了したときに発火します。

`webRequest.onErrorOccurred` (en-US)

エラーが起きたときに発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Extra notes on Chrome incompatibilities.

Example extensions
------------------

* http-response
* root-cert-stats
* stored-credentials
* user-agent-rewriter

**メモ:** This API is based on Chromium's `chrome.webRequest` API. This documentation is derived from `web_request.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


windows - Mozilla

windows
=======

ブラウザーウィンドウと相互作用します。この API を使って開いているウィンドウの情報を取得したり、ウィンドウを開き、修正し、閉じることができます。ウィンドウのオープン、クローズ、アクティベートのイベントをリッスンすることもできます。

型
-

`windows.WindowType`

ブラウザーウィンドウの this の型。

`windows.WindowState`

ブラウザーウィンドウの状態。

`windows.Window` (en-US)

ブラウザーウィンドウについての情報を含む。

`windows.CreateType` (en-US)

作成するブラウザーウィンドウの型を指定する。

定数
--

`windows.WINDOW_ID_NONE` (en-US)

ブラウザーウィンドウがないことを表す `windowId` の値。

`windows.WINDOW_ID_CURRENT` (en-US)

現在のウィンドウを表す `windowId` の値。

メソッド
----

`windows.get()` (en-US)

与えられた ID のウィンドウの詳細を取得します。

`windows.getCurrent()` (en-US)

現在のウィンドウを取得します。

`windows.getLastFocused()` (en-US)

最も最近フォーカスされたウィンドウを取得します — 典型的には「最上位」のウィンドウです。

`windows.getAll()` (en-US)

すべてのウィンドウを取得します。

`windows.create()` (en-US)

新しいウィンドウを作成します。

`windows.update()` (en-US)

ウィンドウのプロパティを更新します。これを使ってウィンドウの移動、リサイズ、フォーカス(外し)などを行います。

`windows.remove()` (en-US)

ウィンドウと、そのタブのすべてを閉じます。

イベント
----

`windows.onCreated` (en-US)

ウィンドウが作成された時に発火します。

`windows.onRemoved` (en-US)

ウィンドウが閉じられた時に発火します。

`windows.onFocusChanged` (en-US)

現在フォーカスされているウィンドウが変わった時に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* annotate-page
* bookmark-it
* private-browsing-theme
* store-collected-images
* theme-integrated-sidebar
* window-manipulator

**メモ:** This API is based on Chromium's `chrome.windows` API. This documentation is derived from `windows.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


cookies - Mozilla

cookies
=======

拡張機能に cookie の取得と設定と、変更された時の通知を可能にします。

この API を使用するには、manifest.json ファイルで "cookies" の API パーミッション があることと、同様にアクセスする cookie を持つ host パーミッション も必要になります。cookie パーミッションを見てください。

型
-

`cookies.Cookie`

HTTP cookie の情報を表す。

`cookies.CookieStore` (en-US)

ブラウザーの cookie store を表す。

`cookies.OnChangedCause` (en-US)

cookie の変更理由を表す。

メソッド
----

`cookies.get()` (en-US)

1 つの cookie の情報を取得する。

`cookies.getAll()` (en-US)

与えられたフィルターにマッチするすべての cookies を取得する。

`cookies.set()` (en-US)

与えられた cookie データ を cookie に設定する; おなじ cookies が存在すれば上書きする。

`cookies.remove()` (en-US)

指定した名前の cookie を削除する。

`cookies.getAllCookieStores()` (en-US)

すべての cookie stores を一覧する。

イベントハンドラー
---------

`cookies.onChanged` (en-US)

cookie が設定、削除された時に発火する。

パーミッション
-------

この API を使うには、アドオンは manifest で "cookies" の API パーミッション を指定せねばならず、同様に cookie がアクセスするあらゆるサイトの host パーミッションも要ります。アドオンは host パーミッションにマッチする URL から読み書きされる cookie を読み書きできます。例えば:

`http://*.example.com/`

この host パーミッションを持つアドオンは下記ができます:

* `www.example.com` のあらゆるパスの、非セキュア型 cookie を読む
* セキュア/非セキュア問わず、`www.example.com` のあらゆるパスの cookie に書き込む

*下記はできません*:

* `www.example.com` のセキュア型 cookie を読む

`http://www.example.com/`

この host パーミッションを持つアドオンは下記ができます:

* `www.example.com` のあらゆるパスの、非セキュア型 cookie を読む
* `.example.com`のあらゆるパスの、非セキュア型 cookie を読む
* セキュア/非セキュア問わず、`www.example.com`のあらゆるパスの cookie に書き込む
* セキュア/非セキュア問わず、`.example.com`のあらゆるパスの cookie に書き込む

*下記はできません*:

* `foo.example.com` の cookie の読み書き
* `foo.www.example.com` の cookie の読み書き

`*://*.example.com/`

この host パーミッションを持つアドオンは下記ができます:

* セキュア/非セキュア問わず、`www.example.com` のあらゆるパスの cookie の読み書き

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* cookie-bg-picker
* list-cookies

**メモ:** この API は Chromium の `chrome.cookies` API に基づいています。また、このドキュメントは `cookies.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


browserSettings - Mozilla

browserSettings
===============

拡張機能にグローバルなブラウザー設定の変更を可能にします。この API の各プロパティは `BrowserSetting` (en-US) オブジェクトで、これはそれぞれの設定の変更能力を提供します。これはグローバルな設定のため、拡張機能で衝突が起きる可能性があります。衝突の処理方法の詳細は `BrowserSetting.set()` の文書を見てください。

この API を使うには "browserSettings" パーミッションが必要です。

プロパティ
-----

`browserSettings.allowPopupsForUserEvents` (en-US)

ユーザーのイベントに反応して、ウェブページで実行しているコードがポップアップを許可するかどうかを決める

`browserSettings.cacheEnabled` (en-US)

ブラウザーキャッシュの有効・無効を決める

`browserSettings.homepageOverride` (en-US)

ブラウザーのホームページの値を読む

`browserSettings.imageAnimationBehavior` (en-US)

ブラウザーが画像アニメーションをどう扱うのかを決める

`browserSettings.newTabPageOverride`

ブラウザーの新規タブページ値を読む

`browserSettings.webNotificationsDisabled` (en-US)

ウェブサイトが `Notification` Web API を使って通知を表示するのを妨げる

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.


runtime - Mozilla

runtime
=======

このモジュールは拡張機能と実行環境の情報を提供します。

また以下のような機能を持つメッセージ API も提供します:

* 拡張機能の別々の部分同士で通信します。メッセージのオプションについて詳しく知りたい場合は、ワンオフメッセージとコネクションベースのメッセージとの選択をご覧ください。
* 他の拡張機能と通信します。
* ネイティブアプリケーションと通信します。
型
-

`runtime.Port` (en-US)

2 つのコンテキスト間の接続の一方を表します。メッセージを交換するために使います。

`runtime.MessageSender`

接続リクエストやメッセージの送信者の情報です。

`runtime.PlatformOs` (en-US)

ブラウザーの OS の識別です。

`runtime.PlatformArch` (en-US)

ブラウザーのプロセッサーアーキテクチャの識別です。

`runtime.PlatformInfo` (en-US)

ブラウザーが動作しているプラットフォームの情報です。

`runtime.RequestUpdateCheckStatus` (en-US)

`runtime.requestUpdateCheck()` (en-US) を呼び出した結果です。

`runtime.OnInstalledReason` (en-US)

`runtime.onInstalled` イベントをディスパッチした理由です。

`runtime.OnRestartRequiredReason` (en-US)

`runtime.onRestartRequired` (en-US) イベントをディスパッチした理由です。

プロパティ
-----

`runtime.lastError`

呼び出し元に伝える必要があるエラーが非同期の関数で起こった時に、この値が設定されます。

`runtime.id` (en-US)

拡張機能の ID です。

関数
--

`runtime.getBackgroundPage()` (en-US)

拡張機能が動作しているバックグラウンドページの Window オブジェクトを取得します。

`runtime.openOptionsPage()`

拡張機能のオプションページを開きます。

`runtime.getFrameId()` (en-US)

グローバルまたはフレーム要素のウィンドウのフレーム ID を取得します。

`runtime.getManifest()` (en-US)

完全な manifest.json ファイルを取得し、オブジェクトとしてシリアライズします。

`runtime.getURL()` (en-US)

manifest.json からの相対パスを指定し、拡張機能に含まれるリソースの完全修飾の URL を返します。

`runtime.setUninstallURL()` (en-US)

拡張機能がアンインストールされた時にアクセスさせる URL を設定します。

`runtime.reload()` (en-US)

拡張機能をリロードします。

`runtime.requestUpdateCheck()` (en-US)

拡張機能のアップデートを確認します。

`runtime.connect()` (en-US)

コンテンツスクリプトから同じ拡張機能の別の処理、または別の拡張機能への接続します。

`runtime.connectNative()` (en-US)

ユーザーのコンピューターに入っているネイティブアプリケーションと拡張機能を接続します。

`runtime.sendMessage()`

拡張機能自身や別の拡張機能のイベントリスナーに 1 つのメッセージを送信します。 `runtime.connect` (en-US) と似ていますが、 `runtime.sendMessage()` では 1 つのメッセージを送るだけで、オプションで応答可能です。

`runtime.sendNativeMessage()` (en-US)

拡張機能からネイティプアプリケーションに 1 つのメッセージを送信します。

`runtime.getPlatformInfo()` (en-US)

現在のプラットフォーム情報を返します。

`runtime.getBrowserInfo()` (en-US)

拡張機能がインストールされたブラウザーの情報を返します。

`runtime.getPackageDirectoryEntry()` (en-US)

拡張機能のディレクトリの DirectoryEntry オブジェクトを返します。

イベント
----

`runtime.onStartup` (en-US)

拡張機能がインストールされたプロフィールが最初に起動された時に発火します。このイベントは、プライベートプロフィールの起動では発火しません。

`runtime.onInstalled`

拡張機能が最初にインストールされた時、拡張機能やブラウザーが新しいバージョンに更新された時に発火します。

`runtime.onSuspend` (en-US)

拡張機能がアンロードされる直前にイベントページに送信します。拡張機能をクリーンアップできます。

`runtime.onSuspendCanceled` (en-US)

拡張機能が結果的にアンロードされなかったことを示すため、 `runtime.onSuspend` (en-US) の後に送信します。

`runtime.onUpdateAvailable` (en-US)

拡張機能が更新可能ですが現在実行中のため、すぐにインストールされない時に発火します。

`runtime.onBrowserUpdateAvailable` (en-US)

ブラウザーが更新可能ですが再起動が必要であるため、すぐにインストールされない時に発火します。

`runtime.onConnect` (en-US)

拡張機能の処理や コンテンツスクリプトと接続した時に発火します。

`runtime.onConnectExternal` (en-US)

別の拡張機能と接続した時に発火します。

`runtime.onMessage`

拡張機能の処理や コンテンツスクリプトからメッセージが送信された時に発火します。

`runtime.onMessageExternal` (en-US)

別の拡張機能からメッセージが送信された時に発火します。コンテンツスクリプトでは使えません。

`runtime.onRestartRequired` (en-US)

デバイスの再起動が必要な時に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* beastify
* content-script-register
* cookie-bg-picker
* devtools-panels
* export-helpers
* favourite-colour
* find-across-tabs
* imagify
* menu-demo
* mocha-client-tests
* native-messaging
* notify-link-clicks-i18n
* permissions
* runtime-examples
* store-collected-images
* user-script-register
* webpack-modules

**メモ:** この API は Chromium の `chrome.runtime` API に基づいています。また、このドキュメントは `runtime.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


find - Mozilla

find
====

ウェブページのテキストを検索し、マッチしたものをハイライトします。

この API を使うには "find" パーミッションが必要です。

関数
--

`find.find()`

ウェブページのテキストを検索する

`find.highlightResults()` (en-US)

最後に検索にマッチした集合をハイライトする

`find.removeHighlighting()` (en-US)

あらゆるハイライトを削除する

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* find-across-tabs


extensionTypes - Mozilla

extensionTypes
==============

その他の WebExtension API で使われる共通な型

型
-

`extensionTypes.ImageFormat` (en-US)

画像フォーマット

`extensionTypes.ImageDetails`

画像のフォーマットと画質の詳細

`extensionTypes.RunAt`

タブに JavaScript か CSS が挿入されてほんのすぐ

`extensionTypes.CSSOrigin`

`tabs.insertCSS` で挿入された CSS スタイルシートが "author" か "user" のスタイルシートのどちらであるかを示す

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.extensionTypes` API に基づいています。また、このドキュメントは `extension_types.json`における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


bookmarks - Mozilla

bookmarks
=========

WebExtensions `bookmarks` API を利用すると、拡張機能からブラウザーのブックマークシステムにアクセスしたり、操作することができます。ページをブックマークしたり、既存のブックマークを取得したり、ブックマークを編集・削除・整理することが可能です。

この API を使用する際は、拡張機能の `manifest.json` ファイルで "bookmarks" パーミッション を指定する必要があります。

拡張機能ではブックマークツリーのルートノードではブックマークを作成・編集・削除できません。それをしようとすると次のエラーになります: "*The bookmark root cannot be modified*"

関連する値の型
-------

`bookmarks.BookmarkTreeNode`

ブックマークツリー上のブックマークやフォルダーを表します。

`bookmarks.BookmarkTreeNodeType`

ツリー内のノードがブックマークかフォルダーかセパレーターかを表す `string` の列挙型です。

`bookmarks.BookmarkTreeNodeUnmodifiable`

ブックマークやフォルダーが変更不可である理由を表す `string` の列挙型です。

`bookmarks.CreateDetails`

新しいブックマークを作成する際、`bookmarks.create()` メソッドに渡す情報を含みます。

関数
--

`bookmarks.create()`

ブックマークやフォルダーを作成します。

`bookmarks.get()`

ブックマークの ID や ID の配列を指定し、1 つ以上の `BookmarkTreeNode(s)` を取得します。

`bookmarks.getChildren()`

指定した `BookmarkTreeNode` の子要素を取得します。

`bookmarks.getRecent()`

最近追加されたブックマークを取得します。

`bookmarks.getSubTree()`

指定したノードを起点とする、ブックマークツリーの部分木を取得します。

`bookmarks.getTree()`

ブックマークのツリー全体を `BookmarkTreeNode` オブジェクトの配列として取得します。

`bookmarks.move()`

指定した `BookmarkTreeNode` を所望の場所に移します。

`bookmarks.remove()`

ノードの ID を指定し、ブックマークや空のブックマークフォルダーを削除します。

`bookmarks.removeTree()`

ブックマークのフォルダーを再帰的に削除します。すなわち、フォルダーノードの ID を指定し、そのノードと子要素すべてを削除します。

`bookmarks.search()`

与えた条件に一致する `BookmarkTreeNodes` を検索します。

`bookmarks.update()`

ブックマークの ID を指定し、ブックマークの URL やタイトル、またはフォルダーの名前を更新します。

Events
------

`bookmarks.onCreated`

ブックマークやフォルダーが作成された際に発火します。

`bookmarks.onRemoved`

ブックマークやフォルダーが削除された際に発火します。フォルダーが再帰的に削除された場合は、そのフォルダーに対して一回だけ発火し、フォルダーの中身については発火しません。

`bookmarks.onChanged`

ブックマークやフォルダーが変更された際に発火します。現在は `title` と url の変更に対してのみ発火します。

`bookmarks.onMoved`

異なる親フォルダーへ、または同じフォルダー内の異なる場所へブックマークやフォルダーが移された際に発火します。

`bookmarks.onChildrenReordered`

UI で表示されている順序に伴って子フォルダーの順序も変更された際に発火します。`move()` の実行後には発火しません。

`bookmarks.onImportBegan`

ブックマークのインポートが開始した際に発火します。パフォーマンスが重要である場合、イベントのオブザーバは `bookmarks.onImportEnded` が発火するまで `bookmarks.onCreated` を無視すべきでしょう。その場合であっても、オブザーバは他のイベントについては即座に処理すべきでしょう。

`bookmarks.onImportEnded`

ブックマークのインポートが終了した際に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* bookmark-it

**メモ:** この API は Chromium の `chrome.bookmarks` API に基づいています。また、このドキュメントは `bookmarks.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


proxy - Mozilla

proxy
=====

拡張された Proxy Auto-Configuration (PAC) file (これはウェブのリクエストをプロキシ化するポリシーを実装します) を実装するのにプロキシ API を使います。この実装は標準の PAC 設計といくつかそれていて、なぜなら PAC ファイルのデファクト仕様は 1995 年頃の初期実装から変えられてないためです。仕様を維持している標準化団体はありません。

Google Chrome では 同じく"proxy"という拡張機能 API が提供されていて、その機能はこの API と似ていて、拡張機能はプロキシポリシーを使うことができます。しかし、Chrome API の設計はこの API とまったく違います。Chrome の API では拡張機能は PAC ファイルを定義できて、明示的なプロキシルールも定義できます。このため拡張機能 PAC ファイルも使用できて、この API は PAC ファイルアプローチのみをサポートします。この API は Chrome `proxy` API と互換性がないため、この API は `browser` 名前空間のみで利用できます。

この API を使うには、"proxy" パーミッションが必要です。

PAC ファイルと通信する
-------------

PAC ファイルと拡張機能のバックグラウンドページ(やその他の権限つきページ、ポップアップページのようなもの)とでメッセージを交換できて、その手段は `runtime.sendMessage()` と `runtime.onMessage`。

PAC ファイルにメッセージを送るには、`toProxyScript` オプションをセットしなければなりません:

```js
// background.js

// Log any messages from the proxy.
browser.runtime.onMessage.addListener((message, sender) => {
  if (sender.url === browser.extension.getURL(proxyScriptURL)) {
    console.log(message);
  }
});

let messageToProxy = {
  enabled: true,
  foo: "A string",
  bar: 1234,
};

browser.runtime.sendMessage(messageToProxy, { toProxyScript: true });
```

```js
// pac.js

browser.runtime.onMessage.addListener((message) => {
  if (message.enabled) {
    browser.runtime.sendMessage("I'm enabled!");
  }
});
```

PAC ファイル仕様
----------

The basic PAC file syntax is described in the PAC documentation, but the implementation used by the proxy API differs from standard PAC design in several ways, which are described in this section.

### FindProxyForURL() return value

The standard `FindProxyForURL()` returns a string. In Firefox 55 and 56, the PAC file used with the proxy API also returns a string. In Firefox 55 *only*, you must pass an argument to the "DIRECT" return value, even though it doesn't need an argument.

From Firefox 57 onwards, `FindProxyForURL()` may still return a string, but may alternatively (and preferably) return an array of objects. Each object has the following properties:

`type`

String. This must be one of: "http"|"https|"socks4"|"socks"|"direct". "socks" refers to the SOCKS5 protocol.

`host`

String. Hostname for the proxy to use.

`port`

String. Port for the proxy.

`username` 省略可

String. Username for the proxy. This is usable with "socks". For HTTP proxy authorizations, use `webRequest.onAuthRequired` (en-US).

`password` 省略可

String. Password for the proxy. This is usable with "socks". For HTTP proxy authorizations, use `webRequest.onAuthRequired` (en-US).

`proxyDNS` 省略可

Boolean. If true, the proxy server is used to resolve certain DNS queries (only usable with "socks4" and "socks"). Defaults to `false`.

`failoverTimeout` 省略可

Integer. Number of seconds before timing out and trying the next proxy in the array. Defaults to 1.

例えば、:

```js
const proxySpecification = [
  {
    type: "socks",
    host: "foo.com",
    port: 1080,
    proxyDNS: true,
    failoverTimeout: 5,
  },
  {
    type: "socks",
    host: "bar.com",
    port: 1060,
  },
];
```

The first proxy in the array will be tried first. If it does not respond in `failoverTimeout` seconds, the next will be tried, until the end of the array is reached.

### PAC ファイル環境

The global helper functions usually available for PAC files (`isPlainHostName()`, `dnsDomainIs()`, and so on) are not available.

Code running in the PAC file does not get access to:

* any DOM functions (例えば、 window or any of its properties)
* any WebExtension APIs except `runtime.sendMessage()` and `runtime.onMessage`
* the console API - to log messages from a PAC, send a message to the background script:

```js
// pac.js

// send the log message to the background script
browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);
```

```js
// background-script.js

function handleMessage(message, sender) {
  // only handle messages from the proxy script
  if (sender.url != browser.extension.getURL(proxyScriptURL)) {
    return;
  }
  console.log(message);
}

browser.runtime.onMessage.addListener(handleMessage);
```

関数
--

`proxy.register()` (en-US)

所与のプロキシスクリプトを登録する

`proxy.unregister()` (en-US)

プロキシスクリプトの登録を取り消す。

イベント
----

`proxy.onProxyError` (en-US)

プロキシスクリプト実行している際にシステムがエラーに遭遇した時に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* proxy-blocker

**メモ:** Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


events - Mozilla

events
======

イベントをディスパッチする API から使われる共通の型です。

型
-

`events.Rule` (en-US)

イベント処理用の宣言的ルールを記述します。

`events.Event` (en-US)

Chrome イベントにリスナーを追加、削除できるオブジェクト。

`events.UrlFilter` (en-US)

いろいろな条件で URL をフィルターする。所与の条件のいずれかがマッチした場合、フィルター全体がマッチする。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.events` API に基づいています。また、このドキュメントは `events.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


sessions - Mozilla

sessions
========

セッション API を使ってブラウザーが動作している間に閉じたタブやウィンドウを一覧、復帰します。

`sessions.getRecentlyClosed()` (en-US) 関数は `tabs.Tab` 配列と`windows.Window` (en-US) オブジェクトを返し、これはブラウザーが動作している間に閉じられたタブやウィンドウを `sessions.MAX_SESSION_RESULTS` (en-US) で定義される上限まで表します。

ウィンドウやタブの復帰は `sessions.restore()` (en-US) 関数を使ってできます。復帰はタブを再オープンするだけではありません: タブの移動履歴を復帰して戻る/進むのボタンが動くようにもします。

この API は拡張機能にタブやウィンドウに関連する追加状態の保存させる関数グループも提供します。それで、タブやウィンドウが閉じられて順次復帰された場合、拡張機能は状態を取得できます。例えば、タブをグループ化する拡張機能は、これを使ってタブがどのグループにいるのかを記憶し、ユーザーがタブを復帰した時に正しいグループに復帰できるようになります。

セッション API を使うには "sessions" API パーミッションが必要です。

型
-

`sessions.Filter` (en-US)

`sessions.getRecentlyClosed()` (en-US)の呼び出しで返される`Session` (en-US) オブジェクトの数を制限します。

`sessions.Session` (en-US)

現在のブラウジングセッションでユーザーが閉じたタブやウィンドウを表します。

プロパティ
-----

`sessions.MAX_SESSION_RESULTS` (en-US)

`sessions.getRecentlyClosed()` (en-US)の呼び出しで返される最大のセッション数。

関数
--

`sessions.forgetClosedTab()` (en-US)

ブラウザーの最近閉じたタブリストから閉じたタブを削除します。

`sessions.forgetClosedWindow()` (en-US)

ブラウザーの最近閉じたウィンドウリストから閉じたウィンドウを削除します。

`sessions.getRecentlyClosed()` (en-US)

`Session` (en-US) オブジェクトを返します、これは現在のブラウジングセッション(つまり: ブラウザーが起動した以降の)で閉じたウィンドウとタブを表しています。

`sessions.restore()` (en-US)

閉じたタブやウィンドウを復元します。

`sessions.setTabValue()` (en-US)

あるタブに関連するキー/バリューペアを保存します。

`sessions.getTabValue()` (en-US)

あるタブのキーに対応するバリューを取得します。

`sessions.removeTabValue()` (en-US)

あるタブに関連するキー/バリューペアを削除します。

`sessions.setWindowValue()` (en-US)

あるウィンドウに関連するキー/バリューペアを保存します。

`sessions.getWindowValue()` (en-US)

あるウィンドウに関連するキー/バリューペアを保存します。

`sessions.removeWindowValue()` (en-US)

あるウィンドウに関連するキー/バリューペアを削除します。

イベント
----

`sessions.onChanged` (en-US)

タブかウィンドウが閉じられたときに発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* session-state

**メモ:** This API is based on Chromium's `chrome.sessions` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


management - Mozilla

management
==========

インストール済みのアドオンの管理情報を取得します。

`management` API で次のことができます

* インストール済みのアドオンの管理情報の取得
* アドオンの有効化・無効化
* アドオンのアンインストール
* 特定のアドオンやマニフェストのパーミッション警告を調べる
* アドオンのインストール・有効・無効の状態に関する通知の取得

操作のほとんどは "management" API パーミッションを要求します。他のアドオンへのアクセスを提供しない操作はこのパーミッションを要求しません。

型
-

`management.ExtensionInfo` (en-US)

インストール済みアドオンの管理情報を持つオブジェクト

関数
--

`management.getAll()` (en-US)

すべてのインストール済みアドオンの管理情報を返します。

`management.get()` (en-US)

指定した ID のアドオンの管理情報を返します。

`management.getSelf()` (en-US)

この関数を呼び出したアドオン自身の管理情報を返します。

`management.install()` (en-US)

addons.mozilla.org で与えられた URL にある、特定のテーマをインストールします。

`management.uninstall()` (en-US)

指定した ID のアドオンをアンインストールします。

`management.uninstallSelf()` (en-US)

この関数を呼び出したアドオン自身をアンインストールします。

`management.getPermissionWarningsById()` (en-US)

指定した ID のアドオンのパーミッション警告一覧を取得します。

`management.getPermissionWarningsByManifest()` (en-US)

指定したマニフェストストリングに対して表示されるパーミッション警告一覧を取得します。

`management.setEnabled()` (en-US)

指定した ID のアドオンを有効化・無効化します。

イベント
----

`management.onInstalled` (en-US)

アドオンがインストールされた時に発火します。

`management.onUninstalled` (en-US)

アドオンがアンインストールされた時に発火します。

`management.onEnabled` (en-US)

アドオンが有効化された時に発火します。

`management.onDisabled` (en-US)

アドオンが無効化された時に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* theme-switcher

**メモ:** この API は Chromium の `chrome.management` API に基づいています。この文書は Chromium code の `management.json` から派生しています。Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.
```

// Copyright 2012 The Chromium Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//    * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//    * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//    * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```


browsingData - Mozilla

browsingData
============

拡張機能がユーザーの閲覧中に蓄積したデータをクリアできるようにします。

`browsingData` API では、閲覧データは下記の型に分けられます。

* browser cache (ブラウザーキャッシュ)
* cookies
* downloads (ダウンロードデータ)
* history (履歴)
* local storage (ローカルストレージ)
* plugin data (プラグインのデータ)
* saved form data (保存したフォームデータ)
* saved passwords (保存したパスワード)

これらの型の組み合わせを削除するのに `browsingData.remove()` (en-US) 関数を使用できます。それぞれのデータ型を削除する専用関数もあり、例えば `removePasswords()` (en-US), `removeHistory()` (en-US) などです。

すべての `browsingData.remove[X]()` 関数は `browsingData.RemovalOptions` (en-US) オブジェクトを取って、これをデータ削除のその他 2 つの側面を管理するのに使うことができます:

* データ削除を過去どれだけ遡れるのか
* 通常のウェブページか、ホストされたウェブアプリも含めてデータ削除するのかのいずれか。このオプションは Firefox ではまだサポートされていないことに注意してください。

最後に、この API の `browsingData.settings()` (en-US) 関数で、ブラウザー組み込みの「履歴消去」機能の現在の設定値を取得できます。

この API を使うには、"browsingData" の API パーミッションが必要です。

型
-

`browsingData.DataTypeSet` (en-US)

削除データの型を指定するオブジェクト。例えば、history, downloads, passwords, など

`browsingData.RemovalOptions` (en-US)

データ削除するのにどれくらい以前に遡るのか、通常のウェブ閲覧/ホスト型アプリ/アドオンのどのデータを削除するのかを指定するオブジェクト。

メソッド
----

`browsingData.remove()` (en-US)

指定された型の閲覧データを削除する

`browsingData.removeCache()`

ブラウザーキャッシュを消去する

`browsingData.removeCookies()` (en-US)

cookies を削除する

`browsingData.removeDownloads()` (en-US)

ダウンロード済みのファイルを削除する

`browsingData.removeFormData()` (en-US)

保存されたフォームデータを消去する

`browsingData.removeHistory()` (en-US)

ブラウザー履歴を消去する

`browsingData.removeLocalStorage()` (en-US)

ウェブサイトが作成した local storage を消去する

`browsingData.removePasswords()` (en-US)

パスワードを消去する

`browsingData.removePluginData()` (en-US)

プラグインに関連するデータを消去する

`browsingData.settings()` (en-US)

ブラウザーの「履歴消去」機能の現在の設定値を得る

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* forget-it

**メモ:** この API は Chromium の `chrome.browsingData` API に基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


notifications - Mozilla

notifications
=============

OS の通知メカニズムを使って、ユーザーへの通知を表示します。この API は OS の通知メカニズムを使うため、OS とユーザー設定によって通知の現れ方やふるまいは変わってきます。

この API を使うには "notifications" パーミッションが必要です。

すべてのデスクトップ OS で通知は同じ見た目です。次のようなものです:

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/notifications/notification.png)

型
-

`notifications.NotificationOptions` (en-US)

通知の中身を定義します。

`notifications.TemplateType` (en-US)

通知の種類。例えば、通知に画像を含められるかなどを定義します。

関数
--

`notifications.clear()` (en-US)

ID に基づいた特定の通知をクリアします。

`notifications.create()` (en-US)

新規の通知を作成、表示します。

`notifications.getAll()` (en-US)

すべての通知を取得します。

`notifications.update()` (en-US)

通知を更新します。

イベント
----

`notifications.onButtonClicked` (en-US)

ユーザーが通知内のボタンをクリックしたときに発火します。

`notifications.onClicked` (en-US)

ユーザーが通知内のボタン以外をクリックしたときに発火します。

`notifications.onClosed` (en-US)

通知が閉じたとき、システムかユーザーいずれかがやめた場合にも、発火します。

`notifications.onShown` (en-US)

通知が表示されるとすぐに発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* export-helpers
* forget-it
* google-userinfo
* notify-link-clicks-i18n
* runtime-examples

**メモ:** This API is based on Chromium's `chrome.notifications` API.


commands - Mozilla

commands
========

`commands` manifest.json キーを使って、登録したコマンドをユーザーが実行するのをリッスンします。

型
-

`commands.Command` (en-US)

コマンドを表す型。これは manifest.json の `commands` キーのコマンドで指定された情報が入っています。

関数
--

`commands.getAll` (en-US)

拡張機能用のすべての登録済みコマンドを取得します。

イベント
----

`commands.onCommand` (en-US)

関連付けされたキーボードショートカットを使ってコマンドが実行された時に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* commands

**メモ:** この API は Chromium の `chrome.commands` API に基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


contentScripts - Mozilla

contentScripts
==============

この API はコンテントスクリプトを登録するためにお使いいただけます。コンテントスクリプトを登録することで、指定した URL にマッチするページにそのスクリプトを挿入するようブラウザに指定することができます。

この API は`manifest.json`にある"content\_scripts"キーと似ていますが、"content\_scripts"ではコンテントスクリプトと URL のパターンは**インストールタイム**に固定されます。一方`content_scripts` API は、\*\*ランタイム（実行時）\*\*でスクリプトを登録・登録解除することが可能です。

この API は、`contentScripts.register()` メソッドを呼び出して使用していただけます。その際は、登録するコンテントスクリプト、URL のマッチングパターン、またその他のオプションを実引数(arguments)として渡してください。このメソッドは`contentScripts.RegisteredContentScript` (en-US) オブジェクトが resolve された `Promise` を返します。

`RegisteredContentScript` オブジェクトは `register()` で登録されたスクリプトを保持し、`unregister()`でそのスクリプトを登録解除(unregister)できます。また、コンテントスクリプトはそれらを作ったページが消された際にも自動的に登録解除されます。例えば、background ページによって登録されたコンテントスクリプトは、background ページが消去された際に自動的に登録解除されます。

`contentScripts` API にパーミッションは存在しませんが、拡張機能は register()でマッチさせる URL においては適切なhost permissionsを持っている必要があります。

Types
-----

`contentScripts.RegisteredContentScript` (en-US)

このタイプのオブジェクトは`contentScripts.register()`関数の返り値です。`contentScripts.register()`関数で登録されたコンテントスクリプトを持ち、このオブジェクトを使ってそれらを登録解除することができます。

Functions
---------

`contentScripts.register()`

コンテントスクリプトを登録します。

ブラウザの互換性
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* content-script-register


omnibox - Mozilla

omnibox
=======

拡張機能に、ユーザーがアドレスバーに入力した時のカスタマイズされた振る舞いを有効にします。

ユーザーがブラウザーのアドレスバーにフォーカスした時、ブラウザーは、タイプした内容に応じたサジェストページを含んだドロップダウンリストを表示します。これはユーザーにとって、例えば履歴やブックマークからのページにすぐにアクセスできる方法を与えます。

omnibox API は、ユーザーが拡張機能で定義されたキーワードを入力した時に、ドロップダウンに表示されるサジェストを拡張機能がカスタマイズする方法を提供します。これは下記のように動作します:

1. まず、拡張機能は manifest.json ファイルに "omnibox" キーを入れないといけません、ここでキーワードを定義します。
2. ユーザーがアドレスバーにフォーカスしてキーワードに続いてスペースをタイプした時、拡張機能は `omnibox.onInputStarted` (en-US) イベントを受け取ります。
3. オプションとして、拡張機能は `omnibox.setDefaultSuggestion()` (en-US) を呼んでアドレスバーのドロップダウンに最初に表示されるサジェストを定義します。
4. ユーザーがこの後にも文字をタイプし続けると、拡張機能は `omnibox.onInputChanged` (en-US) イベントを受け取ります。イベントリスナーはユーザーがタイプした現在の値を受けて、アドレスバーのドロップダウンにサジェストを生成できます。拡張機能が `omnibox.setDefaultSuggestion()` (en-US) を使ったデフォルトのサジェストをセットした場合、これがドロップダウンの最初に出てきます。
5. ユーザーがサジェストを受け入れたら、拡張機能は `omnibox.onInputEntered` (en-US) イベントを受け取ります。イベントリスナーは受け入れられたサジェストを受け取ります。
6. ユーザーがドロップダウンを止めたら、拡張機能は `omnibox.onInputCancelled` (en-US) イベントを受け取ります。
型
-

`omnibox.OnInputEnteredDisposition` (en-US)

Describes the recommended method to handle the selected suggestion: open in the current tab, open in a new foreground tab, or open in a new background tab.

`omnibox.SuggestResult` (en-US)

Object representing a suggestion to add to the address bar drop-down.

関数
--

`omnibox.setDefaultSuggestion()` (en-US)

Defines the first suggestion that appears in the drop-down when the user enters the keyword for your extension, followed by a space.

イベント
----

`omnibox.onInputStarted` (en-US)

Fired when a the user focuses the address bar and types your extension's omnibox keyword, followed by a space.

`omnibox.onInputChanged` (en-US)

Fired whenever the user's input changes, after they have focused the address bar and typed your extension's omnibox keyword, followed by a space.

`omnibox.onInputEntered` (en-US)

Fired when the user accepts one of your extension's suggestions.

`omnibox.onInputCancelled` (en-US)

Fired when the user dismisses the address bar drop-down, after they have focused the address bar and typed your extension's omnibox keyword.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* firefox-code-search

**メモ:** This API is based on Chromium's `chrome.omnibox` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


topSites - Mozilla

topSites
========

topSites API を使うと、ユーザーがよく訪れるページをを含む配列を取得できます。

ブラウザーはユーザーがこれらの場所に簡単に戻れるようにこれを維持します。Firefox では既定で「新しいタブ」ページには最もよく訪れるページのリストが提供されます。

topSites API を使うには "topSites" の API パーミッション必要です。

型
-

`topSites.MostVisitedURL` (en-US)

ウェブサイトのタイトルと URL を含むオブジェクト。

Methods
-------

`topSites.get()` (en-US)

ブラウザーの「新しいタブ」ページに載っているすべてのサイトの配列を取得します。ここで返されるサイトの数はブラウザー固有であり、返されるサイトは、ブラウザー履歴に基づいてユーザー固有であることに注意してください。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* top-sites

**メモ:** This API is based on Chromium's `chrome.topSites` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


tabs - Mozilla

tabs
====

ブラウザーのタブシステムとやりとりします。

この API を使って開いているタブの一覧を取得したり、いろいろな条件でフィルターしたり、タブを開き、更新し、移動し、再読み込みし、削除できます。この API ではタブのコンテンツに直接アクセスできませんが、JavaScript と CSS をタブに挿入することは、`tabs.executeScript()` や `tabs.insertCSS()` (en-US) API を使ってできます。

この API の大半の使用に特別なパーミッションは要りませんが:

* `Tab.url` `Tab.title` `Tab.favIconUrl`, のアクセスには "tabs" パーミッションが必要です。また Firefox では URL による`問い合わせ`をするのにも "tabs" が必要です。
* `tabs.executeScript()` や `tabs.insertCSS()` (en-US) を使うには、そのタブの host パーミッションが必要です。

あるいは、これらのパーミッションを一時的に取得することもできますが、それは現在アクティブなタブで明示的なユーザーアクションへの応答する場合のみで、"activeTab" パーミッションを要求することで可能です。

タブ操作の多くはタブ ID を使います。タブ ID はブラウザーセッションの単一のタブごとにユニークである保証がされています。ブラウザーが再起動したら、タブ ID を再利用できて、実際そうします。ブラウザーの再起動をまたいでタブ情報を関連づけるには `sessions.setTabValue()` (en-US) を使います。

型
-

`tabs.MutedInfoReason`

タブがミュートされている、またはミュートが解除されている理由を示す。

`tabs.MutedInfo`

タブがミュートされているかを示す真理値と、最後の変更の理由からなるオブジェクト。

`tabs.PageSettings` (en-US)

`tabs.saveAsPDF()` (en-US)メソッドにおいて、どのように PDF を描画するかを制御する。

`tabs.Tab`

タブについての情報を含む。

`tabs.TabStatus` (en-US)

タブの読み込み状況を示す。

`tabs.WindowType` (en-US)

タブを所有しているウィンドウのタイプを示す。

`tabs.ZoomSettingsMode` (en-US)

ズームがブラウザーによるものか、拡張機能によるものか、またはズームが許可されていないのかを示す。

`tabs.ZoomSettingsScope` (en-US)

あるページのズームが、同一生成元の別ページにも適用されるか、タブ内でのみかを示す。

`tabs.ZoomSettings` (en-US)

ズーム設定`mode` (en-US), `scope` (en-US)とデフォルトのズーム要因を示す。

プロパティ
-----

`tabs.TAB_ID_NONE` (en-US)

ブラウザーのタブでないタブに対する特殊な ID（Windows の開発ツールなど）。

関数
--

`tabs.captureTab()` (en-US)

あるタブの可視エリアの画像をエンコードしたデータ URI を作成します。

`tabs.captureVisibleTab()`

特定のウィンドウのアクティブなタブの可視エリアの画像をエンコードしたデータ URI を作成します。

`tabs.connect()` (en-US)

あるタブにおいて、バックグラウンドスクリプト（またはその他ポップアップやオプションページのスクリプトなど特権スクリプト）と content scripts 間でのメッセージのやり取り用の経路を確保します。

`tabs.create()`

新しいタブを作る。

`tabs.detectLanguage()` (en-US)

タブのコンテンツの言語を検出する

`tabs.discard()` (en-US)

1 つ以上のタブを破棄する。

`tabs.duplicate()`

タブを複製する。

`tabs.executeScript()`

ページに JavaScript コードを挿入する。

`tabs.get()`

特定のタブについて情報を取り出す。

`tabs.getAllInWindow()` (en-US)
非推奨

特定のウィンドウ内のすべてのタブについての情報を取り出す。

`tabs.getCurrent()` (en-US)

スクリプトが実行されているタブについての情報を `tabs.Tab` オブジェクトとして取り出す。

`tabs.getSelected()` (en-US)
非推奨

あるウィンドウにおいてタブが選択されているかを得る。

`tabs.getZoom()` (en-US)

あるタブについてズーム要因を得る。

`tabs.getZoomSettings()` (en-US)

あるタブについてズーム設定を得る。

`tabs.goForward()` (en-US)

可能な場合、次のページへ進む。

`tabs.goBack()` (en-US)

可能な場合、前のページへ戻る。

`tabs.hide()` (en-US)
Experimental

1 つ以上のタブを隠す。

`tabs.highlight()` (en-US)

1 つ以上のタブをハイライトする。

`tabs.insertCSS()` (en-US)

CSS をページに挿入する。

`tabs.move()` (en-US)

2 つ以上のタブを同じ、あるいは異なるウィンドウの任意のポジションへ移動させる。

`tabs.moveInSuccession()` (en-US)

タブグループの継承関係を編集する。

`tabs.print()` (en-US)

開いているタブのコンテンツを印刷する。

`tabs.printPreview()` (en-US)

開いているタブの印刷プレビューを開く。

`tabs.query()`

特定のプロパティを持つすべてのタブ、またはプロパティが指定されなければすべてのタブを取得します。

`tabs.reload()` (en-US)

タブをリロードする。キャッシュを回避することもできる。

`tabs.remove()`

１つ以上のタブを閉じる。

`tabs.removeCSS()` (en-US)

以前に`tabs.insertCSS()` (en-US)を呼び出して挿入されている CSS を削除する。

`tabs.saveAsPDF()` (en-US)

現在のページを PDF として保存する。

`tabs.sendMessage()` (en-US)

あるタブのコンテンツスクリプトへ、１つのメッセージを送信する。

`tabs.sendRequest()` (en-US)
非推奨

あるタブのコンテンツスクリプトへ、単一のリクエストを送信する。**非推奨**: 代わりに `tabs.sendMessage()` (en-US) を使用してください。

`tabs.setZoom()` (en-US)

あるタブをズームする。

`tabs.setZoomSettings()` (en-US)

あるタブについてズーム設定をする。

`tabs.show()` (en-US)
Experimental

`hidden` (en-US)で隠されたタブを表示する。

`tabs.toggleReaderMode()` (en-US)

あるタブについてのリーダーモードへのトグル。

`tabs.update()` (en-US)

新しい URL に案内、もしくはタブの他のプロパティを修正する。

イベント
----

`tabs.onActivated` (en-US)

ウィンドウ内でアクティブなタブが変わったときに発火。このイベントが発火した段階ではまだタブの URL はセットされているとは限らない。

`tabs.onActiveChanged` (en-US)
非推奨

ウィンドウの中の選択されたタブが変更されたときに発火。**非推奨:** 代わりに`tabs.onActivated` (en-US)を利用してください。

`tabs.onAttached` (en-US)

タブがウィンドウに引っ付けられたとき、例えばウィンドウ間で移動されたときに発火。

`tabs.onCreated`

タブが作られたときに発火。このイベントが発火した段階ではまだタブの URL はセットされているとは限らない。

`tabs.onDetached` (en-US)

タブがウィンドウから切り離されたときに発火。例えば、ウィンドウのない場所へタブを移動させたときなど。

`tabs.onHighlightChanged` (en-US)
非推奨

ウィンドウ内でハイライトまたは選択されたタブが変更したときに発火。**非推奨:** 代わりに`tabs.onHighlighted` (en-US)を使用してください。

`tabs.onHighlighted` (en-US)

ウィンドウ内でハイライトまたは選択されたタブが変更したときに発火。

`tabs.onMoved` (en-US)

ウィンドウ内にタブが移動したときに発火する。

`tabs.onRemoved` (en-US)

タブが閉じられたときに発火する。

`tabs.onReplaced` (en-US)

プリレンダリングによってタブが他のタブに置き換えられたときに発火。

`tabs.onSelectionChanged` (en-US)
非推奨

ウィンドウ内で選択されているタブが変わったときに発火。**非推奨:** 代わりに`tabs.onActivated` (en-US)を使用してください。

`tabs.onUpdated` (en-US)

タブが更新されたときに発火する。

`tabs.onZoomChange` (en-US)

タブがズームされたときに発火する。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* annotate-page
* apply-css
* beastify
* bookmark-it
* chill-out
* commands
* context-menu-copy-link-with-types
* contextual-identities
* cookie-bg-picker
* devtools-panels
* find-across-tabs
* firefox-code-search
* history-deleter
* imagify
* list-cookies
* menu-demo
* menu-labelled-open
* menu-remove-element
* open-my-page-button
* permissions
* session-state
* store-collected-images
* tabs-tabs-tabs

**メモ:** This API is based on Chromium's `chrome.tabs` API. This documentation is derived from `tabs.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


browserAction - Mozilla

browserAction
=============

ブラウザーのツールバーにボタンを追加します。

ブラウザーアクション (en-US)はブラウザーのツールバー内のボタンです。

これをボタンつきポップアップと関連付けられます。ポップアップは通常のウェブページ同様に、HTML, CSS, JavaScript を使って指定できます。ポップアップの中で動く JavaScript はバックグラウンドスクリプトとすべて同じ WebExtension API にアクセスできますが、グローバルコンテキストはブラウザーに表示される現在のページではなく、ポップアップになります。ウェブページに影響するには messages 経由で通信する必要があります。

ユーザーがアイコンをクリックした時に、ポップアップを指定していると、表示され — そしてコンテンツが読み込まれるでしょう 。ポップアップを指定していない時は、ユーザーがアイコンをクリックした時、拡張機能にイベントがディスパッチされます。

たいていのブラウザーアクションのプロパティは、manifest.json 内の `browser_action` キーを用いて宣言的に定義できます。

`browserAction` API では、次が可能です:

* `browserAction.onClicked` を使ってアイコンのクリックをリッスンする
* アイコンのプロパティ — アイコン、タイトル、ポップアップなど、の取得、設定。これはすべてのタブを通してグローバルにも、またはタブの ID を追加引数で渡すことで特定のタブだけにも取得、設定できます。
型
-

`browserAction.ColorArray`

RGBA 色を決める 0-255 の範囲の 4 整数の配列

`browserAction.ImageDataType` (en-US)

画像のピクセルデータ。`ImageData` オブジェクト (例えば `<canvas>` 要素から) でないといけない。

関数
--

`browserAction.setTitle()` (en-US)

ブラウザーアクションのタイトルをセットする。ツールチップに表示される。

`browserAction.getTitle()` (en-US)

ブラウザーアクションのタイトルを取得します。

`browserAction.setIcon()` (en-US)

ブラウザーアクションのアイコンをセットします。

`browserAction.setPopup()` (en-US)

ユーザーがブラウザーアクションのアイコンをクリックした時に表示されるポップアップの HTML 文書をセットします。

`browserAction.getPopup()` (en-US)

ブラウザーアクションのポップアップとしてセットされた HTML 文書を取得します。

`browserAction.openPopup()` (en-US)

ブラウザーアクションのポップアップを開きます。

`browserAction.setBadgeText()` (en-US)

ブラウザーアクションのバッジテキストをセットします。バッジはアイコンの上部に表示されます。

`browserAction.getBadgeText()` (en-US)

ブラウザーアクションのバッジのテキストを取得します。

`browserAction.setBadgeBackgroundColor()` (en-US)

バッジの背景色を指定します。

`browserAction.getBadgeBackgroundColor()` (en-US)

バッジの背景色を取得します。

`browserAction.enable()` (en-US)

タブのブラウザーアクションを有効にします。既定では、ブラウザーアクションはすべてのタブで有効です。

`browserAction.disable()`

タブのブラウザーアクションを無効にします。つまりタブがアクティブでもクリックできません。

`browserAction.isEnabled()` (en-US)

ブラウザーアクションが有効か否かをチェックします。

イベント
----

`browserAction.onClicked`

ブラウザーアクションがクリックされた時に発火します。このイベントはブラウザーアクションがポップアップ付きでない場合は発火しません。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* bookmark-it
* favourite-colour
* find-across-tabs
* forget-it
* google-userinfo
* native-messaging
* open-my-page-button
* permissions
* runtime-examples
* store-collected-images
* tabs-tabs-tabs

**メモ:** この API は Chromium の `chrome.browserAction` API に基づいています。この文書は Chromium コードの `browser_action.json` から得ています。Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


idle - Mozilla

idle
====

ユーザーのシステムがアイドル状態、ロックされた状態、アクティブな状態であるのを発見します。

この API を使うには "idle" パーミッションが必要です。

型
-

`idle.IdleState` (en-US)

端末のアイドル状態を記す文字列

関数
--

`idle.queryState()` (en-US)

システムがロックされたら `"locked"` を、ユーザーが指定した時間の間に何も入力しない場合は `"idle"` を、その他では `"active"` を返す。

`idle.setDetectionInterval()` (en-US)

`idle.onStateChanged` (en-US) イベントでシステムがアイドル状態であると決定する間隔をセットします。

イベント
----

`idle.onStateChanged` (en-US)

システム状態が変化したら発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** This API is based on Chromium's `chrome.idle` API. This documentation is derived from `idle.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


devtools - Mozilla

devtools
========

拡張機能がブラウザーの開発者ツールと対話することを可能にします。この API を使用して、開発者ツールのページを作成したり、検査対象のウィンドウと対話したり、ページのネットワーク使用状況を検査したりすることができます。

この API を使用するには、 `"devtools"` API 権限が manifest.json ファイルで指定されている必要があります。この権限はオプションの権限ではありません。

プロパティ
-----

`devtools.inspectedWindow`

開発者ツールが接続されているウィンドウ（検査されるウィンドウ）と対話します。これには、検査されたページのタブ ID の取得、検査されたウィンドウのコンテキストでのコードの評価、ページの再読み込み、ページ内のリソース一覧の取得などが記載されています。

`devtools.network`

開発者ツールが接続されているウィンドウ（インスペクトウィンドウ）に関連するネットワークリクエストの情報を取得します。

`devtools.panels`

ユーザーエージェント開発者ツール内に表示されるユーザーインターフェースパネルを作成します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.devtools` API に基づいています。

Microsoft Edge の互換性データは、 Microsoft Corporation によって提供され、 Creative Commons Attribution 3.0 United States License の下でここに記載されています。


theme - Mozilla

theme
=====

ブラウザー拡張機能がブラウザーのテーマを更新できるようにします。

この API を使用するには、拡張機能の manifest.json ファイルで "theme" パーミッション を要求しなければなりません。

**メモ:** バックグランドファイルでテーマをセットアップする場合、'theme' パーミッションを宣言しなければなりません。さもなければ、manifest の theme 関数を使用できません。

型
-

`theme.Theme` (en-US)

テーマのコンテンツを表します。

関数
--

`theme.getCurrent()` (en-US)

現在のブラウザーテーマを取得します。

`theme.update()` (en-US)

ブラウザーのテーマを更新します。

`theme.reset()` (en-US)

`theme.update()` (en-US) の呼び出しで更新されたテーマをすべて削除します。

イベント
----

`theme.onUpdated` (en-US)

ブラウザーテーマが変更された時に発火。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* dynamic-theme
* private-browsing-theme
* theme-integrated-sidebar


sidebarAction - Mozilla

sidebarAction
=============

拡張機能のサイドバーのプロパティを取得、設定します。

サイドバー (en-US) はブラウザーウィンドウのウェブページの隣の、右側か左側にあるペインです。ブラウザーはユーザーが利用できるサイドバーを見て、表示するサイドバーを選択できる UI を提供します。manifest.json の `sidebar_action` キーを使って、拡張機能は自身のサイドバーを定義できます。ここで述べる `sidebarAction` API を使って、拡張機能はサイドバーのプロパティを設定、取得できます。

`sidebarAction` API は `browserAction` API と緊密にモデリングされています。

sidebarAction API は Opera の sidebarAction API を元にしていますが、次のものはサポートされていません: `setBadgeText()`, `getBadgeText()`, `setBadgeBackgroundColor()`, `getBadgeBackgroundColor()`, `onFocus`, `onBlur`.

型
-

`sidebarAction.ImageDataType` (en-US)

画像のピクセルデータ。`ImageData` オブジェクト (例えば、`<canvas>` 要素からのもの)でなければならない。

関数
--

`sidebarAction.setPanel()` (en-US)

サイドバーのバネルを設定します。

`sidebarAction.getPanel()` (en-US)

サイドバーのバネルを取得します。

`sidebarAction.setTitle()` (en-US)

サイドバーのタイトルを設定します。これはブラウザーがサイドバーを一覧するあらゆる UI、例えばメニューに表示されます。

`sidebarAction.getTitle()` (en-US)

サイドバーのタイトルを取得します。

`sidebarAction.setIcon()` (en-US)

サイドバーのアイコンを設定します。

`sidebarAction.open()` (en-US)

サイドバーを開きます。

`sidebarAction.close()` (en-US)

サイドバーを閉じます。

`sidebarAction.isOpen()` (en-US)

サイドバーが開いているか否かをチェックします。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

add-ons の例
----------

* annotate-page

**メモ:** This API is based on Opera's `chrome.sidebarAction` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


downloads - Mozilla

downloads
=========

拡張機能にブラウザーのダウンロードマネージャーとのやりとりを可能にします。この API モジュールを、ファイルマネージャーでのファイルのダウンロード、キャンセル、停止、ダウンロードの再開、ダウンロード済みのファイルの表示に使用できます。

この API を使うには manifest.json ファイルで指定する "downloads" API パーミッションが必要です。

型
-

`downloads.FilenameConflictAction` (en-US)

ダウンロードされたファイル名が既存ファイルと衝突する場合の動作オプション定義

`downloads.InterruptReason` (en-US)

ダウンロードが中断された理由の集合を定義

`downloads.DangerType` (en-US)

ダウンロード可能なファイルに関連した想定される危険性への警告の集合を定義

`downloads.State` (en-US)

現在のダウンロードが取りうるさまざまな状態を定義

`downloads.DownloadItem` (en-US)

ダウンロード済みのファイルを表現する

`downloads.StringDelta` (en-US)

2 つの文字列の差異を表現する

`downloads.DoubleDelta` (en-US)

2 つの倍精度実数の差異を表現する

`downloads.BooleanDelta` (en-US)

2 つの真偽値の差異を表現する

`downloads.DownloadTime` (en-US)

ダウンロード完了にかかった時間を表現する

`downloads.DownloadQuery` (en-US)

ダウンロードマネージャーで特定のダウンロードを検索するのに使われるパラメーターを定義

関数
--

`downloads.download()`

URL とオプション設定を与えて、ファイルをダウンロードします

`downloads.search()` (en-US)

ブラウザーのダウンロードマネージャーで使える `DownloadItems` (en-US) に問い合わせて、指定した検索条件にマッチするものを返します

`downloads.pause()` (en-US)

ダウンロードを停止します

`downloads.resume()` (en-US)

停止したダウンロードを再開します

`downloads.cancel()` (en-US)

ダウンロードをキャンセルします

`downloads.getFileIcon()` (en-US)

指定したダウンロードのアイコンを取得します

`downloads.open()` (en-US)

関連付けられたアプリケーションでダウンロード済みのファイルを開きます

`downloads.show()` (en-US)

プラットフォームのファイルマネージャーアプリケーションを開いて、ダウンロードフォルダー内のファイルを表示します

`downloads.showDefaultFolder()` (en-US)

プラットフォームのファイルマネージャーアプリケーションを開いて、デフォルトのダウンロードフォルダーを表示します

`downloads.erase()` (en-US)

ダウンロード済みのファイルをディスクから消去することなく、ブラウザーのダウンロード履歴からマッチした `DownloadItems` (en-US) を消去します

`downloads.removeFile()` (en-US)

ブラウザーのダウンロード履歴ではなく、ダウンロード済みのファイルをディスクから消去します

`downloads.acceptDanger()` (en-US)

危険なダウンロードを受け入れるかキャンセルするかを、ユーザーに確認します

`downloads.drag()`

ダウンロード済みのファイルを他のアプリケーションにドラッグし始めます

`downloads.setShelfEnabled()` (en-US)

現在のブラウザープロファイルに関連するすぺてのウィンドウの下のグレーの棚を有効化/無効化します。この棚は少なくとも 1 つの拡張機能が無効化すると無効になります。

イベント
----

`downloads.onCreated` (en-US)

ダウンロード開始時に `DownloadItem` (en-US) オブジェクトと共に発火します

`downloads.onErased` (en-US)

ダウンロードが履歴から消去された時に `downloadId` と共に発火します

`downloads.onChanged` (en-US)

`bytesReceived` を除くいかなる `DownloadItem` (en-US) のプロパティが変わった時、このイベントは `downloadId` や変更したプロパティを含むオブジェクトと共に発火します

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* latest-download

**メモ:** この API は Chromium の `chrome.downloads` API に基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


history - Mozilla

history
=======

ブラウザー履歴とやりとりする `history` API を使用します。

**メモ:** downloads は `HistoryItem` オブジェクトとして扱われるのに注意します。このため、ダウンロードのために `history.onVisited` (en-US) も発火します。

ブラウザー履歴はユーザーが訪れたページの時間順の記録です。history API では次の事ができます:

* ブラウザー履歴に出てくるページの検索
* ブラウザー履歴から個々のページを削除
* ブラウザー履歴にページを追加
* ブラウザー履歴から全ページを削除

しかしながら、ユーザーは１つのページを何度も訪問することがあるので、この API は「訪問数」の概念もあります。したがってこの API を次のようにも使えます:

* ユーザーが特定のページを訪問した完全なセットを取得する
* 所定の期間に訪問したあらゆるページの訪問を削除する

この API を使うには manifest.json ファイルで指定する "history" パーミッションが必要です。

型
-

`history.TransitionType` (en-US)

ブラウザーがあるページにどのように移動したのかを記述

`history.HistoryItem`

ブラウザー履歴のあるページに関する情報を提供

`history.VisitItem` (en-US)

ページへの単一の訪問を記述

関数
--

`history.search()` (en-US)

ブラウザー履歴を検索して、所与の条件にマッチする `history.HistoryItem` オブジェクトを得る

`history.getVisits()` (en-US)

所定のページへの訪問についての情報を取得する

`history.addUrl()` (en-US)

ブラウザー履歴に所定のページへの訪問のレコードを追加する

`history.deleteUrl()` (en-US)

ブラウザー履歴から 所定の URL へのすべての訪問を削除する

`history.deleteRange()` (en-US)

所定の時間範囲でユーザーが訪問したすべてのページを削除する

`history.deleteAll()` (en-US)

ブラウザー履歴からすべての訪問を削除する

イベント
----

`history.onTitleChanged` (en-US)

ユーザーがあるページに訪問してタイトルが記録された時に発火します

`history.onVisited` (en-US)

ユーザーがあるページに `history.HistoryItem` を提供しつつそのページを訪問した時に発火します

`history.onVisitRemoved` (en-US)

ある URL がブラウザー履歴から完全に削除された時に発火します

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* history-deleter

**メモ:** この API は Chromium の `chrome.history` API に基づいています。また、このドキュメントは `history.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


i18n - Mozilla

i18n
====

拡張機能を国際化する関数です。これらの API は、拡張機能に同梱したロケールファイルからローカライズ文字列を取得したり、ブラウザーの現在の言語や、その Accept-Language ヘッダー を調べるために使用します。

拡張機能で i18n を使用するための詳細は、以下の記事を参照してください:

* 国際化拡張: WebExtension の i18n システムを使うためのガイド。
* ロケール固有のメッセージ参照: 拡張機能が `messages.json` と呼ばれるファイルで供給するロケール固有の文字列。このページは、`messages.json` の書式について書かれています。
型
-

`i18n.LanguageCode`

`"en-US"` や "`fr`" などの 言語タグ。

関数
--

`i18n.getAcceptLanguages()`

ブラウザーの accept-languages を取得します。これは、ブラウザーに使用されているロケールとは異なります。ロケールを取得するには、`i18n.getUILanguage` を使用してください。

`i18n.getMessage()`

指定したメッセージのローカライズ文字列を取得します。

`i18n.getUILanguage()`

ブラウザーの UI 言語を取得します。これは、優先されるユーザー言語を返す `i18n.getAcceptLanguages` とは異なります。

`i18n.detectLanguage()`

提供されたテキストの言語を Compact Language Detector を利用して検出します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* menu-accesskey-visible
* menu-demo
* notify-link-clicks-i18n

**メモ:** この API は、Chromium の `chrome.i18n` API を基にしています。このドキュメンテーションは、Chromium コード内の `i18n.json` に由来しています。Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。


webNavigation - Mozilla

webNavigation
=============

ナビゲーションのいろいろな段階でイベントリスナーを追加します。ナビゲーションにはある URL から他に移動するブラウザーフレームにより成り立っていて、それは(いつもではなく)通常はリンクのクリックやロケーションバーへの URL 入力といったユーザー操作の応答として発生します。

`webRequest` API と比較して: ナビゲーションは通常、ブラウザーにウェブリクエストを発生させますが、webRequest API は HTTP 層からの低レベルな観点に関心を持っており、一方で webNavigation API はブラウザー UI 自身に対して、より関心を持っています。

それぞれのイベントはナビゲーションの特定のステージに対応しています。イベントシーケンスは次の通りです:

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation/we-flow.png)

* 主なフローは次の通り:
    + ``onBeforeNavigate` (en-US)`
    + ``onCommitted` (en-US)`
    + ``onDOMContentLoaded` (en-US)`
    + ``onCompleted` (en-US)`.
* 追加のものは次の通り:
    + ``onCreatedNavigationTarget` (en-US)` は、ブラウザーがナビゲーション用にタブやウィンドウを作成する必要がある場合 (例えば、ユーザーがリンクを新しいタブで開いたために)、`onBeforeNavigate` の前に発火します。
    + `onHistoryStateUpdated` (en-US) はページが history API を使ってブラウザーのロケーションバーに表示された URL を更新する場合に発火します。
    + `onReferenceFragmentUpdated` (en-US) はページの fragment identifier が変更された場合に発火します。
    + `onErrorOccurred` (en-US) はあらゆる場所で発火します。

それぞれのナビゲーションは特定のブラウザーフレーム内の URL の遷移です。ブラウザーフレームはタブ ID とフレーム ID で識別されます。フレームはタブ内の再上位のブラウジングコンテキストである場合や、iframe として実装されたネストされたブラウジングコンテキストである場合があります。

それぞれのイベントの `addListener()` の呼び出しはオプションの filter パラメーターを受け入れます。filter は 1 つ以上の URL パターンを指定し、イベントはターゲット URL がパターンにマッチしたナビゲーションの時だけに発火します。

`onCommitted` イベントリスナーには 2 つの追加プロパティが渡されます: ナビゲーションの原因 (例えばユーザーがリンクをクリックしたり、ユーザーがブックマークを選んだり) を示す`TransitionType` (en-US) と、ナビゲーションの詳細情報を提供する`TransitionQualifier` (en-US) です。

この API を使うには"webNavigation" パーミッションが必要です。

型
-

`webNavigation.TransitionType` (en-US)

ナビゲーションの原因: 例えば、ユーザーがリンクをクリックしたり、アドレスを入力したり、ブックマークをクリックしたりなど。

`webNavigation.TransitionQualifier` (en-US)

遷移の追加情報

関数
--

`webNavigation.getFrame()` (en-US)

特定フレームについての情報を取得します。フレームにはタブ内のトップレベルのフレームや、ネストされた iframe であり、タブ ID とフレーム ID でユニークに識別されます。

`webNavigation.getAllFrames()` (en-US)

タブ ID を指定すると、そのタブに含まれているすべてのフレームの情報を取得します。

イベント
----

`webNavigation.onBeforeNavigate` (en-US)

ブラウザーがナビゲーションイベントを開始する直前に発火します。

`webNavigation.onCommitted` (en-US)

ナビゲーションがコミットされたときに発火します。少なくともサーバーから新しい document がいくらか取得されてブラウザーが新 document に切り替えると決めたとき。

`webNavigation.onDOMContentLoaded` (en-US)

ページ内で DOMContentLoaded イベントが発火したときに発火します。

`webNavigation.onCompleted` (en-US)

document と、それが参照するリソースが完全にロードされて初期化されたときに発火します。これは DOM `load` イベントと等価です。

`webNavigation.onErrorOccurred` (en-US)

エラーが起こってナビゲーションが停止したときに発火します。これはネットワークエラーが起きたときや、ユーザーがナビゲーションを停止したときのいずれかで起こりえます。

`webNavigation.onCreatedNavigationTarget` (en-US)

新しいウィンドウや、既存のウィンドウ内の新規タブが作成されてナビゲーションをホストするときに発火します: 例えば、ユーザーが新しいタブでリンクを開いた場合。

`webNavigation.onReferenceFragmentUpdated` (en-US)

ページの fragment identifier が変化したときに発火します。

`webNavigation.onTabReplaced` (en-US)

タブのコンテンツが別のタブ (通常は以前レンダリング済みのもの) に置き換えられるときに発火します。

`webNavigation.onHistoryStateUpdated` (en-US)

ページで history API を使ってブラウザーのロケーションバーの URL が更新されたときに発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* navigation-stats

**メモ:** This API is based on Chromium's `chrome.webNavigation` API. This documentation is derived from `web_navigation.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


types - Mozilla

types
=====

ブラウザー設定を表すのに使われる `BrowserSetting` 型を定義します。

型
-

`types.BrowserSetting` (en-US)

ブラウザー設定を表現します。

ブラウザーの互換性
---------

**メモ:** This API is based on Chromium's `chrome.types` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


extension - Mozilla

extension
=========

拡張機能に関連するユーティリティ。拡張機能のリソースパッケージの URL を取得したり、拡張機能のページの `Window` オブジェクトを取得したり、いろいろな設定の値を取得したりします。注意として、このモジュールのメッセージ APIs は非推奨で、 `runtime` モジュールの同様な API が好まれます。

型
-

`extension.ViewType` (en-US)

拡張機能ビューの型

プロパティ
-----

`extension.lastError` (en-US)

同期型の拡張機能 API がエラーに終わった場合のコールバックの寿命をセットします。エラーが起きなかったら lastError は *undefined*.になります。

`extension.inIncognitoContext` (en-US)

incognito タブ内でコンテンツスクリプトが実行されたり、 incognito プロセス内で拡張機能ページが実行されたら true になります。後者は 'split' incognito\_behavior の場合だけです。

関数
--

`extension.getURL()` (en-US)

拡張機能がインストールされたディレクトリーの相対パスを完全修飾 URL に変換する

`extension.getViews()` (en-US)

今の拡張機能内で実行されているページの `Window` オブジェクトを返す

`extension.getBackgroundPage()` (en-US)

今の拡張機能内で実行されているバックグラウンドページの `Window` オブジェクトを返す。拡張機能がバックグラウンドページを持たない場合は null を返す

`extension.isAllowedIncognitoAccess()` (en-US)

拡張機能が Incognito-モード (ユーザーが制御する 'Incognito を許可' のチェックボックスで定義される) にアクセスする状態を取得する

`extension.isAllowedFileSchemeAccess()` (en-US)

拡張機能が 'file://' スキーム(ユーザーが制御する 'File URLs のアクセスを許可' のチェックボックスで定義される) にアクセスする状態を取得する

`extension.setUpdateUrlData()` (en-US)

拡張機能の更新 URL 内で使われる ap CGI パラメーターをセットする。この値はブラウザーのベンダーストアでホストされる拡張機能では無視される

イベント
----

`extension.onRequest` (en-US)

拡張機能のプロセスかコンテンツスクリプトのいずれかからリクエストが送られた時に発火します

`extension.onRequestExternal` (en-US)

その他の拡張機能からリクエストが送られた時に発火します

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* beastify
* cookie-bg-picker
* find-across-tabs
* imagify
* notify-link-clicks-i18n
* proxy-blocker
* user-agent-rewriter

**メモ:** この API は Chromium の `chrome.extension` API に基づいています。また、このドキュメントは `extension.json`における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


permissions - Mozilla

permissions
===========

拡張機能のインストール後、実行時に特別なパーミッションの要求を可能にする。

拡張機能は強力な WebExtension API の多くにアクセスするパーミッション(アクセス権)を必要とします。manifest.json の `permissions` に必要なパーミッション記述することで、インストール時にユーザーに対しパーミッションを要求できます。インストール時にパーミッションを要求する主なメリットは次の通りです:

* ユーザーは一度のみアクセス権を要求されます。したがって、混乱しにくくシンプルに決断を下すことができます。
* 拡張機能は必要な時のみ API に頼ることが可能です。すでに動作していれば、アクセス権は付与されていることになります。

インストールした拡張機能のアクセス権の認証の見た目は、ユーザーにとってシンプルな GUI とは言えません。ユーザーは about:debugging のページを使用して、"この Firefox"ボタンから"拡張機能"のセクションに行き、参照するアドオンの"マニフェスト URL"のリンクを使用しなければなりません。 この URL は拡張機能で使用されている生の json ファイルへのリンクです。拡張機能の json ファイルは"permissions"ブロックを含み、これを確認することによってアドオンが使用しているアクセス権を確認することができます。

拡張機能は実行時に、permissions API によって追加のパーミッションを求めることができます.These permissions need to be listed in the `optional_permissions` manifest.json key. Note that some permissions are not allowed in `optional_permissions`. The main advantages of this are:

* the extension can run with a smaller set of permissions except when it actually needs them
* the extension can handle permission denial in a graceful manner instead of presenting the user with a global "all or nothing" choice at install time. You can still get a lot out of that map extension without giving it access to your location, for example.
* the extension may need host permissions, but not know at install time exactly which host permissions it needs. For example, the list of hosts may be a user setting. In this scenario, asking for a more specific range of hosts at runtime can be an alternative to asking for "<all\_urls>" at install time.

To use the permissions API, decide which permissions your extension can request at runtime, and list them in `optional_permissions`. After this, you can request any permissions that were included in `optional_permissions`. Requests may only be made in the handler for a user action (for example, a click handler).

型
-

`permissions.Permissions` (en-US)

Represents a set of permissions.

メソッド
----

`permissions.contains()` (en-US)

Find out whether the extension has the given set of permissions.

`permissions.getAll()` (en-US)

Get all the permissions this extension currently has.

`permissions.remove()` (en-US)

Give up a set of permissions.

`permissions.request()` (en-US)

Ask for a set of permissions.

Event handlers
--------------

`permissions.onAdded` (en-US)

Fired when a new permission is granted.

`permissions.onRemoved` (en-US)

Fired when a permission is removed.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

その他
---

* `manifest.json` `permissions` property
* `manifest.json` `optional_permissions` property
Example extensions
------------------

* dnr-dynamic-with-options
* dnr-redirect-url
* permissions

**メモ:** This API is based on Chromium's `chrome.permissions` API.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


clipboard - Mozilla

clipboard
=========

クリップボード API は、拡張機能がシステムのクリップボードに要素をクリップするのを可能にします。現在この API は画像のコピーだけをサボートしていますが、将来的にはテキストと HTML のコピーをサボートする計画です。

この WebExtension API は主に標準の web クリップボード API がクリップボードに画像を書き込めないために存在しています。標準 web API にこの力が備わった時には、この API は非推奨になるはずです。

クリップボードの読み込みはこの API でサポートしません。なぜならクリップボードはすでに標準 web プラットホーム API を用いて読むことができるからです。クリップボードとやりとりするを見てください。

この API は Chrome の `clipboard` API に基づきますが、その API は Chrome アプリだけで利用できて、拡張機能ではできません。

この API を使うには "clipboardWrite" パーミッションが必要です。

関数
--

`clipboard.setImageData()`

画像をクリップボードにコピーする

ブラウザー互換性
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.clipboard` API に基づきます。


contextualIdentities - Mozilla

contextualIdentities
====================

contextual identities の操作: contextual identities を一覧、作成、削除、更新します。

"Contextual identities"は「コンテナ」とも言われ、ブラウザーの機能で、ユーザーがウェブブラウズしている時に複数の ID を想定し、そこでも ID 同時の分離を維持したいアイデアを指します。例えば、ユーザーが「仕事の ID」と「個人の ID」を分けたいと考えて、これら 2 つのコンテキストで cookies を共有したくない場合など。

contextual identities 機能により、各コンテキスト ID は名前、色、及びアイコンを持ちます。新規タブが ID にアサインされ、名前、アイコン、色がアドレスバーに出現します。内部的には、各 ID が他のタブには共有されない自分の cookie ストアを持ちます。

![](/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/containers.png)Contextual identities は Firefox の実験的機能であり、Firefox Nightly だけでデフォルト有効になっています。その他のバージョンの Firefox で有効にするには、 `privacy.userContext.enabled` の設定を `true` にします。contextual identities は Android 版 Firefox でも利用できますが、このバージョンでは動作する UI がないのにご注意ください。

Firefox 57 より前では、`contextualIdentities` API は contextual identities 機能自体が有効になっている場合にだけ利用できます。機能が無効なまま拡張機能が `contextualIdentities` API を使おうとした場合、メソッド呼び出しは promises を `false` に解決します。

Firefox 57 以降では、`contextualIdentities` API を使う拡張機能がインストールされたら、contextual identities 機能は自動的に有効化されます。"privacy.userContext.enabled" プリファレンスを使って、まだユーザーが機能を無効化できるのに注意します。これが起きたら、`contextualIdentities` メソッドの呼び出しで、エラーメッセージと共に promises を拒否します。

Firefox での contextual identities のより詳しい情報はこのガイドを見てください。

Contextual identities は現在その他のブラウザーではサポートされていません。

この API を使うには、 manifest.json ファイル内で "contextualIdentities" パーミッションを入れます。

型
-

`contextualIdentities.ContextualIdentity` (en-US)

contextual identity に関する情報を含みます。

関数
--

`contextualIdentities.create()` (en-US)

新しい contextual identity を作成します

`contextualIdentities.get()` (en-US)

cookie ストア ID を引数に、単一の contextual identity を取得します

`contextualIdentities.query()` (en-US)

すべての contextual identities を取得、あるいは特定の名前の全 contextual identities を取得します

`contextualIdentities.update()` (en-US)

既存の contextual identity のプロパティを更新します

`contextualIdentities.remove()` (en-US)

contextual identity を削除します

イベント
----

`contextualIdentities.onCreated` (en-US)

contextual identity 作成時に発火します

`contextualIdentities.onRemoved` (en-US)

contextual identity 削除時に発火します

`contextualIdentities.onUpdated` (en-US)

1 つ以上の contextual identity のプロパティが更新された時に発火します

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* contextual-identities


alarms - Mozilla

alarms
======

コードが動作するタイミングを予約します。この API は `setTimeout()` や `setInterval()` と似ていますが、 alarms API はバックグラウンドで動作する点が異なります。

この API を利用するには "alarms" パーミッション が必要です。

関連する値の型
-------

`alarms.Alarm`

特定のアラームに関する情報が含まれます。

メソッド
----

`alarms.create()`

新しいアラームを生成します。

`alarms.get()`

与えた名前に対応するアラームを取得します。

`alarms.getAll()`

予約されたアラームすべてを取得します。

`alarms.clear()`

与えた名前に対応するアラームを解除します。

`alarms.clearAll()`

予約されたアラームすべてを解除します。

イベント
----

`alarms.onAlarm`

アラームが動作した際に発火します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Example extensions
------------------

* chill-out
* dynamic-theme

**メモ:** この API は Chromium の `chrome.alarms` API に基づいています。Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


pageAction.onClicked - Mozilla

pageAction.onClicked
====================

ページアクションのアイコンがクリックされたときに発火します。ページアクションがポップアップを持っているならこのイベントは発火しません。

右クリックのアクションを定義するには、`contextMenus` (en-US) API を"page\_action" context type (en-US)とともに使ってください。

書式
--

```js
browser.pageAction.onClicked.addListener(listener);
browser.pageAction.onClicked.removeListener(listener);
browser.pageAction.onClicked.hasListener(listener);
```

イベントは 3 つの関数を持ちます:

`addListener(callback)`

このイベントにリスナーを追加します。Adds a listener to this event.

`removeListener(listener)`

このイベントのリスニングを停止します。引数`listener`は削除するリスナーです。

`hasListener(listener)`

`listener`がイベントに登録されているかを調べます。リスニング中であれば`true`を、そうれなければ`false`を返します。

addListener の書式
---------------

### パラメータ

`callback`

イベント発生時に呼び出される関数です。関数は次の引数を渡されます:

`tab`

ページアクションがクリックされたタブの`tabs.Tab`オブジェクト。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

ユーザがページアクションをクリックしたとき、それを隠し、アクティブタブを"http://chilloutandwatchsomecatgifs.com/"に誘導します:

```js
var CATGIFS = "http://chilloutandwatchsomecatgifs.com/";

browser.pageAction.onClicked.addListener((tab) => {
  browser.pageAction.hide(tab.id);
  browser.tabs.update({ url: CATGIFS });
});

browser.pageAction.onClicked.addListener(function () {});
```

### Example extensions

* apply-css
* chill-out

**メモ:** This API is based on Chromium's `chrome.pageAction` API. This documentation is derived from `page_action.json` in the Chromium code.Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.


browserSettings.newTabPageOverride - Mozilla

browserSettings.newTabPageOverride
==================================

`BrowserSetting` (en-US) オブジェクトを使用すると「新規タブ」ページ、つまりユーザーが新しい空のタブを開いたときのページを表す URL を取得することができます。

なお、これは読み取り専用の設定です。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

現在の新規タブ URL を取得する：

```js
browser.browserSettings.newTabPageOverride.get({}).then((result) => {
  console.log(result.value);
});
```


Element.openOrClosedShadowRoot - Mozilla

Element.openOrClosedShadowRoot
==============================

**非標準:** この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

**メモ:** この API は WebExtensions でのみ使用できます。

`Element.openOrClosedShadowRoot` は読み取り専用プロパティで、この要素が保持しているシャドウルートを、 `mode` が `open` であるか `closed` であるかに関わらず表します。

`Element.attachShadow()` を使用すると、シャドウルートを既存の要素に追加することができます。

構文
--

```js
var shadowroot = element.openOrClosedShadowRoot;
```

### 値

`ShadowRoot` オブジェクトインスタンスで、 `mode` が `open` と `closed` のどちらに設定されていても取得できます。シャドウルートが存在しない場合は `null` です。
 （詳細は `Element.attachShadow()` を参照してください。）

仕様書
---

*このプロパティは仕様書にはありません。*

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Element.shadowRoot`


menus.onClicked - Mozilla

menus.onClicked
===============

メニューアイテムがクリックされたときに発火します。

他のブラウザとの互換性のために Firefox はこのイベントを名前空間`contextMenus`と`menu`を経由して利用可能にしています。

書式
--

```js
browser.menus.onClicked.addListener(listener);
browser.menus.onClicked.removeListener(listener);
browser.menus.onClicked.hasListener(listener);
```

イベントは 3 つの関数を持ちます:

`addListener(callback)`

このイベントのリスナーを追加します。

`removeListener(listener)`

リスニングを停止します。引数`listener`は削除するリスナーです。

`hasListener(listener)`

`listener`が登録されているかどうかを調べます。`true`が返ればリスニング中、そうでなければ`false`が返ります。

addListener の書式
---------------

### パラメータ

`callback`

イベントが起こったときに呼ばれる関数です。以下の引数を渡されます:

`info`

`menus.OnClickData` (en-US). Information about the item clicked and the context where the click happened.

`tab`

`tabs.Tab`. The details of the tab where the click took place. If the click did not take place in or on a tab, this parameter will be missing.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

この例はメニューアイテムのクリックをリッスンし、アイテムの ID とタブの ID をログします:

```js
browser.menus.create({
  id: "click-me",
  title: "Click me!",
  contexts: ["all"],
});

browser.menus.onClicked.addListener((info, tab) => {
  console.log("Item " + info.menuItemId + " clicked " + "in tab " + tab.id);
});
```

### Example extensions

* menu-accesskey-visible
* menu-demo
* menu-labelled-open
* menu-remove-element
* menu-search
* session-state

**メモ:** This API is based on Chromium's `chrome.contextMenus` API. This documentation is derived from `context_menus.json` in the Chromium code.


identity.getRedirectURL() - Mozilla

identity.getRedirectURL()
=========================

リダイレクト URL として利用可能な URL を生成します。

この URL は、アドオン ID から生成されるため、使用したい場合、`browser_specific_settings` キーを使用してアドオン ID を明示的に設定する必要があるでしょう (設定しない場合、アドオンを一時的にインストールするたびに、異なるリダイレクト URL を取得することになります)。

リダイレクト URL については、リダイレクト URL を取得するを参照してください。

構文
--

```js
var redirectURL = browser.identity.getRedirectURL();
```

### 引数

なし

### 返り値

リダイレクト URL を含む文字列

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

リダイレクト URL を取得する:

```js
var redirectURL = browser.identity.getRedirectURL();
```

### Example extensions

* google-userinfo

**メモ:** この API は Chromium の `chrome.identity` API に基づいています。Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います


storage.local - Mozilla

storage.local
=============

`local` ストレージ領域を指します。`local`ストレージ内のアイテムはその拡張機能がインストールされたマシン内で利用できます。

ブラウザーは拡張機能がローカルストレージエリアに保存できるデータ量を制限します。

* Chrome では、この API を使用して、"unlimitedStorage"パーミッションを許可しない場合は 5MB まで保存できます。
* Firefox ではバージョン 56 以降で"unlimitedStorage"パーミッションを利用できます。保存できるデータ量は現在では制限していませんが、将来的には制限するため、もし大きなデータ量を保存するのであれば"unlimitedStorage"パーミッションを今から使用するとよいでしょう。

拡張機能をアンインストールすると、関連するローカルストレージは削除されます。

また Firefox では、"about:config"で"keepUuidOnUninstall"と"keepStorageOnUninstall"の設定を`true`にすることで、アンインストール時にデータが削除されることを防ぐことができます。 この機能は拡張機能開発のテストのために提供されています。拡張機能自身ではこれらの設定を変更できません。

この API は `Window.localStorage`に似ていますが、拡張機能のコード内で`Window.localStorage`を使用することは推奨されません。これはユーザがプライバシーのために履歴とデータを削除するなど、Firefox は localStorage API を用いて拡張機能が保存したデータを削除することがあるためです。

関数
--

`local`オブジェクトは`storage.StorageArea` 型で定義された関数を実装しています。

`storage.StorageArea.get()`

ストレージ領域から 1 つ以上のアイテムを取得します。

`storage.StorageArea.getBytesInUse()`

1 つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。

`storage.StorageArea.set()`

1 つ以上のアイテムをストレージ領域に格納します。既にアイテムが存在していれば値は上書きされます。 値を格納したとき`storage.onChanged` (en-US)イベントが発火します。

`storage.StorageArea.remove()`

ストレージ領域内の 1 つ以上のアイテムを削除します。

`storage.StorageArea.clear()`

ストレージ領域内の全てのアイテムを削除します。

ブラウザ互換状況
--------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### Example extensions

* annotate-page
* forget-it
* navigation-stats
* proxy-blocker
* quicknote
* stored-credentials

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json`における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


storage.StorageArea - Mozilla

storage.StorageArea
===================

StorageArea はストレージ領域を表すオブジェクトです。

型
-

StorageArea はオブジェクト型です。

関数
--

`storage.StorageArea.get()`

ストレージ領域から 1 つ以上のアイテムを取得します。

`storage.StorageArea.getBytesInUse()`

ストレージ領域に格納されている 1 つ以上のアイテムで使用されているストレージサイズ(バイト単位)を取得します。

`storage.StorageArea.set()`

1 つ以上のアイテムをストレージ領域に保存します。既にアイテムが存在する場合は値が上書きされます。

`storage.StorageArea.remove()`

1 つ以上のアイテムをストレージ領域から削除します。

`storage.StorageArea.clear()`

全てのアイテムをストレージ領域から削除します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium `chrome.storage` API に模度づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


storage.StorageChange - Mozilla

storage.StorageChange
=====================

`StorageChange` はストレージ領域の変更を表すオブジェクトです。

型
-

`StorageChange` オブジェクトは以下のプロパティを持ちます。

`oldValue`省略可

アイテムの変更前の値が存在すれば、この中に入ります。データ型は特定されておらず、何らかのデータ型が入ります。

`newValue`省略可

アイテムの変更後の値があれば、この中に入ります。データ型は特定されておらず、何らかのデータ型が入ります。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


storage.sync - Mozilla

storage.sync
============

`sync` ストレージ領域を指します。 `sync` ストレージ内のアイテムはブラウザーによって同期され、ログイン(Firefox sync や Google アカウントなど)しているブラウザー・デバイスの全てのインスタンスで利用できます。

Firefox の場合、ユーザーは `"about:preferences"` の "Sync 設定" オプションの下にある "アドオン" ボックスにチェックを入れる必要があります。

`storage.sync` の実装はアドオン ID に依存していることに注意してください。もし `storage.sync` を使うのであれば、 `browser_specific_settings` manifest.json キーを使用して拡張機能に ID を設定する必要があります。

この API の主な利用例は拡張機能の設定を格納し、異なるプロファイル間で同期させることです。この API は最大 100 KB までデータを格納できます。それ以上格納しようとするとエラーメッセージを返して失敗します。 この API は稼働時間やパフォーマンスを保証しません。

関数
--

`sync` オブジェクトは `storage.StorageArea` 型で定義された関数を実装しています。

`storage.StorageArea.get()`

ストレージ領域から 1 つ以上のアイテムを取得します。

`storage.StorageArea.getBytesInUse()`

1 つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。

`storage.StorageArea.set()`

1 つ以上のアイテムをストレージ領域に格納します。既にアイテムが存在していれば値は上書きされます。

`storage.StorageArea.remove()`

ストレージ領域内の 1 つ以上のアイテムを削除します。

`storage.StorageArea.clear()`

ストレージ領域内の全てのアイテムを削除します。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### Example extensions

* favourite-colour

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


StorageArea.remove() - Mozilla

StorageArea.remove()
====================

1 つ以上のアイテムをストレージ領域から削除します。

この関数は `Promise` を返す非同期関数です。

構文
--

```js
let removingItem = browser.storage.<storageType>.remove(
  keys             // string, or array of strings
)
```

`<storageType>` は `storage.sync` または `storage.local` の書き込み可能なストレージタイプです。

### 引数

`keys`

削除したいアイテムのキー(文字列または文字列の配列)を指定します。

### 返り値

成功時は引数の無い `Promise` を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

1 つのアイテムを削除する例です。

```js
function onRemoved() {
  console.log("OK");
}

function onError(e) {
  console.log(e);
}

let removeKitten = browser.storage.remove("kitten");
removeKitten.then(onRemoved, onError);
```

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


StorageArea.set() - Mozilla

StorageArea.set()
=================

1 つ以上のアイテムをストレージ領域に保存または上書きします。

この API を使用して保存や上書きをする場合、`storage.onChanged` (en-US) イベントが発火します。

この関数は `Promise` を返す非同期関数です。

構文
--

```js
let settingItem = browser.storage.<storageType>.set(
  keys             // オブジェクト
)
```

`<storageType>` は `storage.sync` または `storage.local` の書き込み可能なストレージタイプです。

### 引数

`keys`

保存したい 1 つ以上のキー/値ペアを持つオブジェクトを指定します。アイテムが既に存在する場合、値は上書きされます。

値は primitive 型 (整数型・ブール型・文字列) または`配列` を指定でできます。

通常は他の型 (`Function`, `Date`, `RegExp`, `Set`, `Map`, `ArrayBuffer` など)は格納できません。これらのサポートされていない型の中には空のオブジェクトとして復元されたり、 `set()` がエラーをスローする場合があります。この場合の挙動はブラウザに依存します。

### 返り値

成功時は引数の無い `Promise` を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

```js
function setItem() {
  console.log("OK");
}

function gotKitten(item) {
  console.log(`${item.kitten.name} has ${item.kitten.eyeCount} eyes`);
}

function gotMonster(item) {
  console.log(`${item.monster.name} has ${item.monster.eyeCount} eyes`);
}

function onError(error) {
  console.log(error);
}

// オブジェクトを2つ定義
var monster = {
  name: "Kraken",
  tentacles: true,
  eyeCount: 10,
};

var kitten = {
  name: "Moggy",
  tentacles: false,
  eyeCount: 2,
};

// オブジェクト2つを格納
browser.storage.local.set({ kitten, monster }).then(setItem, onError);

browser.storage.local.get("kitten").then(gotKitten, onError);
browser.storage.local.get("monster").then(gotMonster, onError);
```

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。


StorageArea.getBytesInUse() - Mozilla

StorageArea.getBytesInUse()
===========================

1 つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。

この関数は `Promise` を返す非同期関数です。

構文
--

```js
var gettingSpace = browser.storage.<storageType>.getBytesInUse(
  keys                      // null, string, or array of strings
)
```

`<storageType>` は `storage.sync` または `storage.local` の書き込み可能なストレージタイプです。

### 引数

`keys`

ストレージ空間を取得したいアイテムのキー(文字列または文字列の配列)を指定します。 空の文字列か配列を渡すと 0 が返ります。 `null` を指定すると、ストレージ領域全体の使用中ストレージ空間を返します。

### 返り値

成功時は `keys` で指定されたオブジェクトが占めるストレージ空間を持つ整数 `bytesUsed` を引数に持つ `Promise` を返します。失敗した場合 Promise はエラーメッセージと共にリジェクトされます。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


StorageArea.get() - Mozilla

StorageArea.get()
=================

ストレージ領域から 1 つ以上のアイテムを取得します。

この関数は `Promise` を返す非同期関数です。

構文
--
```

let gettingItem = browser.storage.<storageType>.get(
  keys    // null, string, object or array of strings
)
```

`<storageType>` は `storage.sync` または `storage.local` の書き込み可能なストレージタイプです。

### 引数

`keys`

取得したいアイテムのキー(文字列・文字列の配列またはデフォルト値を指定するオブジェクト)を指定します。空文字列・オブジェクト・配列を指定すると空のオブジェクトが取得できます。 `null` か未定義の値を指定するとストレージ全体のアイテムが取得できます。

### 返り値

成功時は `keys` で指定されたストレージ領域内のアイテム全てを含む `results` オブジェクトを引数に持つ `Promise` を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。

**警告:** 52 より前の Firefox バージョンのコンテンツスクリプトで使用する場合、 `browser.storage.local.get()` で返される Promise は 1 つのオブジェクトを持つ配列を引数に持ちます。配列内のオブジェクトは上記に記述したようにストレージ領域内の `keys` を持っています。 The Promise is correctly fulfilled with an Object when used in the background context (background scripts, popups, options pages, etc.). When this API is used as `chrome.storage.local.get()`, it correctly passes an Object to the callback function.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

あらかじめストレージ領域に 2 つのアイテムを格納しておきます。

```js
// "kitten" と "monster" を格納
browser.storage.local.set({
  kitten: { name: "Mog", eats: "mice" },
  monster: { name: "Kraken", eats: "people" },
});
```

次に promise で使う成功時と失敗時のハンドラを定義しておきます。

```js
function onGot(item) {
  console.log(item);
}

function onError(error) {
  console.log(`Error: ${error}`);
}
```

`keys` を指定せずに呼び出すと全て取得します。

```js
let gettingItem = browser.storage.local.get();
gettingItem.then(onGot, onError);

// -> Object { kitten: Object, monster: Object }
```

空のキーを指定すると何も返しません。

```js
// 空の配列を指定すると何も返らない
let gettingItem = browser.storage.local.get([]);
gettingItem.then(onGot, onError);

// -> Object { }
```

オブジェクト名を指定すると、合致するものを返します。

```js
let gettingItem = browser.storage.local.get("kitten");
gettingItem.then(onGot, onError);

// -> Object { kitten: Object }
```

オブジェクト名の配列を指定すると合致するものを全て返します。

```js
let gettingItem = browser.storage.local.get([
  "kitten",
  "monster",
  "grapefruit",
]);
gettingItem.then(onGot, onError);

// -> Object { kitten: Object, monster: Object }
```

オブジェクト名をキー、デフォルト値を value に指定したオブジェクトを指定する場合

```js
let gettingItem = browser.storage.local.get({
  kitten: "no kitten",
  monster: "no monster",
  grapefruit: {
    name: "Grape Fruit",
    eats: "Water",
  },
});

// -> Object { kitten: Object, monster: Object, grapefruit: Object }
```

### Chrome での例

```js
chrome.storage.local.get("kitten", function (items) {
  console.log(items.kitten); // -> {name:"Mog", eats:"mice"}
});
```

Or with an arrow function

```js
chrome.storage.local.get("kitten", (items) => {
  console.log(items.kitten); // -> {name:"Mog", eats:"mice"}
});
```

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。


StorageArea.clear() - Mozilla

StorageArea.clear()
===================

全てのアイテムをストレージ領域から削除します。

この関数は `Promise` を返す非同期関数です。

構文
--

```js
var clearing = browser.storage.<storageType>.clear()
```

`<storageType>` は `storage.sync` または `storage.local` の書き込み可能なストレージタイプです。

### 引数

なし

### 返り値

成功時は引数の無い `Promise` を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

例
-

```js
function onCleared() {
  console.log("OK");
}

function onError(e) {
  console.log(e);
}

var clearStorage = browser.storage.local.clear();
clearStorage.then(onCleared, onError);
```

**メモ:** この API は Chromium の `chrome.storage` API に基づいています。また、このドキュメントは `storage.json` における Chromium のコードに基づいています。Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。