chrome.browserAction

説明

ブラウザ アクションを使用すると、アドレスバーの右側にある Google Chrome のメイン ツールバーにアイコンを表示できます。ブラウザ アクションには、アイコンの他に、ツールチップバッジポップアップを設定できます。

対象

≤ MV2

次の図では、アドレスバーの右にあるカラフルな四角形がブラウザ アクションのアイコンです。アイコンの下にポップアップが表示されます。

常にアクティブではないアイコンを作成する場合は、ブラウザ アクションではなくページ アクションを使用します。

マニフェスト

次のように、拡張機能のマニフェストでブラウザ アクションを登録します。

{
  "name": "My extension",
  ...
  "browser_action": {
    "default_icon": {                // optional
      "16": "images/icon16.png",     // optional
      "24": "images/icon24.png",     // optional
      "32": "images/icon32.png"      // optional
    },
    "default_title": "Google Mail",  // optional, shown in tooltip
    "default_popup": "popup.html"    // optional
  },
  ...
}

Chrome で使用するアイコンのサイズは任意で指定できます。Chrome は、指定されたサイズに最も近いアイコンを選択し、16 dip のスペースを埋める適切なサイズに拡大縮小します。ただし、正確なサイズが指定されていない場合、このスケーリングによってアイコンのディテールが失われたり、ぼやけて表示されたりすることがあります。

1.5 倍や 1.2 倍など、あまり一般的でないスケール ファクタのデバイスが増えているため、アイコンの複数のサイズを用意することをおすすめします。また、アイコンの表示サイズが変更された場合でも、別のアイコンを用意する手間が省けます。

デフォルト アイコンを登録するための古い構文は引き続きサポートされています。

{
  "name": "My extension",
  ...
  "browser_action": {
    ...
    "default_icon": "images/icon32.png"  // optional
    // equivalent to "default_icon": { "32": "images/icon32.png" }
  },
  ...
}

UI の各部分

ブラウザ アクションには、アイコンツールチップバッジポップアップを設定できます。

アイコン

Chrome のブラウザ アクション アイコンは、幅と高さが 16 ディップ(デバイスに依存しないピクセル)です。大きなアイコンは収まるようにサイズ変更されますが、最適な結果を得るには 16 dip の正方形アイコンを使用してください。

アイコンは、静止画像を使用する方法と、HTML5 の canvas 要素を使用する方法の 2 つの方法で設定できます。静的画像を使用する方がシンプルなアプリケーションには適していますが、キャンバス要素を使用すると、スムーズなアニメーションなど、より動的な UI を作成できます。

静止画像は、BMP、GIF、ICO、JPEG、PNG など、WebKit で表示できる形式であれば、どの形式でも使用できます。パッケージ化されていない拡張機能の場合、画像は PNG 形式である必要があります。

アイコンを設定するには、マニフェストdefault_icondefault_icon フィールドを使用するか、browserAction.setIcon メソッドを呼び出します。

画面のピクセル密度(比率 size_in_pixel / size_in_dip)が 1 と異なる場合にアイコンを適切に表示するには、アイコンを異なるサイズの画像のセットとして定義します。表示する実際の画像は、16 dip のピクセルサイズに最も適したものがセットから選択されます。アイコンセットには任意のサイズのアイコン仕様を含めることができ、Chrome は最も適切なものを選択します。

ツールチップ

ツールチップを設定するには、マニフェストdefault_titledefault_title フィールドを使用するか、browserAction.setTitle メソッドを呼び出します。default_title フィールドにロケール固有の文字列を指定できます。詳しくは、多言語対応をご覧ください。

バッジ

ブラウザ アクションでは、アイコンの上に重ねて表示されるテキストであるバッジをオプションで表示できます。バッジを使用すると、ブラウザ アクションを簡単に更新して、拡張機能の状態に関する少量の情報を表示できます。

バッジのスペースには限りがあるため、4 文字以下にしてください。

バッジのテキストと色をそれぞれ browserAction.setBadgeTextbrowserAction.setBadgeBackgroundColor を使用して設定します。

ブラウザ アクションにポップアップがある場合、ユーザーが拡張機能のアイコンをクリックするとポップアップが表示されます。ポップアップには任意の HTML コンテンツを含めることができ、コンテンツに合わせて自動的にサイズが調整されます。ポップアップのサイズは 25x25 以上 800x600 以下にする必要があります。

ブラウザ アクションにポップアップを追加するには、ポップアップのコンテンツを含む HTML ファイルを作成します。マニフェストdefault_popupdefault_popup フィールドで HTML ファイルを指定するか、browserAction.setPopup メソッドを呼び出します。

ヒント

視覚的な効果を最大限に高めるには、次のガイドラインに沿って作成してください。

  • ほとんどのページで意味のある機能には、ブラウザ アクションを使用します。
  • ブラウザ アクションは、一部のページでのみ意味のある機能には使用しないでください。代わりにページ アクションを使用してください。
  • 16x16 dip のスペースを最大限に活用した、大きくカラフルなアイコンを使用します。ブラウザ アクション アイコンは、ページ アクション アイコンよりも少し大きく、重く見えるようにします。
  • Google Chrome のモノクロ メニュー アイコンを模倣しようとしないでください。これはテーマとの相性が悪く、拡張機能は少し目立つようにすべきです。
  • アイコンにソフトなエッジを追加するには、アルファ透過を使用します。多くのユーザーがテーマを使用するため、アイコンはさまざまな背景色で美しく見えるようにする必要があります。
  • アイコンを常にアニメーション表示しないでください。それはただの迷惑です。

ブラウザ アクションの使用例は、examples/api/browserAction ディレクトリで確認できます。その他の例や、ソースコードの表示に関するヘルプについては、サンプルをご覧ください。

TabDetails

Chrome 88 以降

プロパティ

  • tabId

    number 省略可

    状態をクエリするタブの ID。タブが指定されていない場合は、タブ固有ではない状態が返されます。

メソッド

disable()

Promise
chrome.browserAction.disable(
  tabId?: number,
  callback?: function,
)
: Promise<void>

タブのブラウザ アクションを無効にします。

パラメータ

  • tabId

    number 省略可

    ブラウザ アクションを変更するタブの ID。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

enable()

Promise
chrome.browserAction.enable(
  tabId?: number,
  callback?: function,
)
: Promise<void>

タブのブラウザ アクションを有効にします。デフォルトは enabled です。

パラメータ

  • tabId

    number 省略可

    ブラウザ アクションを変更するタブの ID。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getBadgeBackgroundColor()

Promise
chrome.browserAction.getBadgeBackgroundColor(
  details: TabDetails,
  callback?: function,
)
: Promise<extensionTypes.ColorArray>

ブラウザ アクションの背景色を取得します。

パラメータ

  • 詳細
  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (result: ColorArray) => void

戻り値

  • Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getBadgeText()

Promise
chrome.browserAction.getBadgeText(
  details: TabDetails,
  callback?: function,
)
: Promise<string>

ブラウザ アクションのバッジ テキストを取得します。タブが指定されていない場合は、タブ固有ではないバッジのテキストが返されます。

パラメータ

  • 詳細
  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (result: string) => void

    • 件の結果

      文字列

戻り値

  • Promise<string>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getPopup()

Promise
chrome.browserAction.getPopup(
  details: TabDetails,
  callback?: function,
)
: Promise<string>

このブラウザ アクションのポップアップとして設定されている HTML ドキュメントを取得します。

パラメータ

  • 詳細
  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (result: string) => void

    • 件の結果

      文字列

戻り値

  • Promise<string>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

getTitle()

Promise
chrome.browserAction.getTitle(
  details: TabDetails,
  callback?: function,
)
: Promise<string>

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

パラメータ

  • 詳細
  • callback

    関数 省略可

    callback パラメータは次のようになります。

    (result: string) => void

    • 件の結果

      文字列

戻り値

  • Promise<string>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setBadgeBackgroundColor()

Promise
chrome.browserAction.setBadgeBackgroundColor(
  details: object,
  callback?: function,
)
: Promise<void>

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

パラメータ

  • 詳細

    オブジェクト

    • 文字列 | ColorArray

      バッジの RGBA カラーを構成する 0 ~ 255 の範囲の 4 つの整数の配列。CSS 16 進数カラー値を含む文字列(#FF0000#F00(赤)など)にすることもできます。色を完全に不透明な状態でレンダリングします。

    • tabId

      number 省略可

      特定のタブが選択されている場合にのみ変更を制限します。タブを閉じると自動的にリセットされます。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setBadgeText()

Promise
chrome.browserAction.setBadgeText(
  details: object,
  callback?: function,
)
: Promise<void>

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

パラメータ

  • 詳細

    オブジェクト

    • tabId

      number 省略可

      特定のタブが選択されている場合にのみ変更を制限します。タブを閉じると自動的にリセットされます。

    • テキスト

      文字列 省略可

      任意の数の文字を渡すことができますが、スペースに収まるのは約 4 文字のみです。空の文字列('')が渡されると、バッジのテキストがクリアされます。tabId が指定され、text が null の場合、指定されたタブのテキストがクリアされ、デフォルトでグローバル バッジのテキストになります。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setIcon()

Promise
chrome.browserAction.setIcon(
  details: object,
  callback?: function,
)
: Promise<void>

ブラウザ アクションのアイコンを設定します。アイコンは、画像ファイルへのパス、キャンバス要素のピクセルデータ、またはそれらのいずれかのディクショナリとして指定できます。path プロパティまたは imageData プロパティのいずれかを指定する必要があります。

パラメータ

  • 詳細

    オブジェクト

    • imageData

      ImageData | object 省略可

      設定するアイコンを表す ImageData オブジェクトまたは {size -> ImageData} ディクショナリのいずれか。アイコンが辞書として指定されている場合、使用される画像は画面のピクセル密度に応じて選択されます。1 つの画面スペース単位に収まる画像ピクセルの数が scale の場合、サイズ scale * n の画像が選択されます。ここで、n は UI のアイコンのサイズです。画像を少なくとも 1 つ指定する必要があります。「details.imageData = foo」は「details.imageData = {'16': foo}」と同じです。

    • パス

      string | object 省略可

      設定するアイコンを指す相対画像パス、または {サイズ -> 相対画像パス} のディクショナリ。アイコンが辞書として指定されている場合、使用される画像は画面のピクセル密度に応じて選択されます。1 つの画面スペース単位に収まる画像ピクセルの数が scale の場合、サイズ scale * n の画像が選択されます。ここで、n は UI のアイコンのサイズです。画像を少なくとも 1 つ指定する必要があります。'details.path = foo' は 'details.path = {'16': foo}' と同等です。

    • tabId

      number 省略可

      特定のタブが選択されている場合にのみ変更を制限します。タブを閉じると自動的にリセットされます。

  • callback

    関数 省略可

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 116 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setPopup()

Promise
chrome.browserAction.setPopup(
  details: object,
  callback?: function,
)
: Promise<void>

ユーザーがブラウザ アクション アイコンをクリックしたときにポップアップとして開く HTML ドキュメントを設定します。

パラメータ

  • 詳細

    オブジェクト

    • ポップアップ

      文字列

      ポップアップに表示する HTML ファイルの相対パス。空の文字列('')に設定すると、ポップアップは表示されません。

    • tabId

      number 省略可

      特定のタブが選択されている場合にのみ変更を制限します。タブを閉じると自動的にリセットされます。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

setTitle()

Promise
chrome.browserAction.setTitle(
  details: object,
  callback?: function,
)
: Promise<void>

ブラウザ アクションのタイトルを設定します。このタイトルはツールチップに表示されます。

パラメータ

  • 詳細

    オブジェクト

    • tabId

      number 省略可

      特定のタブが選択されている場合にのみ変更を制限します。タブを閉じると自動的にリセットされます。

    • title

      文字列

      ブラウザ アクションにマウスオーバーしたときに表示する文字列。

  • callback

    関数 省略可

    Chrome 67 以降

    callback パラメータは次のようになります。

    () => void

戻り値

  • Promise<void>

    Chrome 88 以降

    Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。

イベント

onClicked

chrome.browserAction.onClicked.addListener(
  callback: function,
)

ブラウザ アクション アイコンがクリックされると呼び出されます。ブラウザ アクションにポップアップがある場合は発火しません。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります。

    (tab: tabs.Tab) => void