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 點半的空間。不過,如果未提供確切大小,這種縮放方式可能會導致圖示失去細節或看起來模糊。

由於使用較不常見的縮放比例 (例如 1.5x 或 1.2x) 的裝置越來越多,建議您為圖示提供多種尺寸。這也能確保如果圖示顯示大小有所變更,您就不需要再提供其他圖示!

系統仍支援註冊預設圖示的舊語法:

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

使用者介面的部分

瀏覽器動作可以包含圖示工具提示徽章彈出式視窗

圖示

Chrome 中的瀏覽器動作圖示寬度和高度為 16 個 dip (裝置獨立像素)。較大的圖示會調整大小以符合螢幕尺寸,但為了獲得最佳效果,請使用 16 像素正方形圖示。

您可以使用靜態圖片或 HTML5 畫布元素,以兩種方式設定圖示。使用靜態圖片可讓簡單的應用程式更容易操作,但您可以使用畫布元素建立更多動態 UI,例如流暢的動畫。

靜態圖片可採用 WebKit 支援的任何格式,包括 BMP、GIF、ICO、JPEG 或 PNG。如果是未解壓縮的擴充功能,圖片必須為 PNG 格式。

如要設定圖示,請使用資訊清單中的 default_icondefault_icon 欄位,或呼叫 browserAction.setIcon 方法。

為了在螢幕像素密度 (比例 size_in_pixel / size_in_dip) 與 1 不同時正確顯示圖示,可以將圖示定義為一組不同大小的圖片。系統會從集合中選取實際要顯示的圖片,以便最適合 16 個像素點大小。圖示集合可包含任何大小的圖示規格,Chrome 會選取最合適的圖示。

工具提示

如要設定工具提示,請在資訊清單中使用 default_titledefault_title 欄位,或呼叫 browserAction.setTitle 方法。您可以為 default_title 欄位指定語言代碼專屬字串,詳情請參閱「國際化」一文。

徽章

瀏覽器動作可選擇顯示徽章,也就是疊加在圖示上的文字。徽章可讓您輕鬆更新瀏覽器動作,以便顯示擴充功能狀態的少量資訊。

由於徽章的空間有限,因此徽章的長度應為 4 個字元以下。

分別使用 browserAction.setBadgeTextbrowserAction.setBadgeBackgroundColor 設定徽章的文字和顏色。

如果瀏覽器動作含有彈出式視窗,使用者點選擴充功能圖示時,彈出式視窗就會顯示。彈出式視窗可包含您想要的任何 HTML 內容,且會自動調整大小,以配合內容。彈出式視窗的大小不得小於 25x25,且不得大於 800x600。

如要在瀏覽器動作中加入彈出式視窗,請建立含有彈出式視窗內容的 HTML 檔案。在資訊清單中,在 default_popupdefault_popup 欄位中指定 HTML 檔案,或呼叫 browserAction.setPopup 方法。

訣竅

如要獲得最佳視覺效果,請遵循下列規範:

  • 針對大多數網頁上適合的功能使用瀏覽器動作。
  • 不要將瀏覽器動作用於僅適用於少數網頁的功能。請改用頁面動作
  • 使用大且色彩鮮豔的圖示,充分運用 16 x 16 點的空間。瀏覽器動作圖示應比網頁動作圖示稍大且較醒目。
  • 請勿模仿 Google Chrome 的單色選單圖示。這對主題設計不太適合,而且擴充功能應與主題有所區隔。
  • 使用 Alpha 透明度,為圖示加入柔和邊緣。由於許多人都會使用主題,因此您的圖示應能在各種背景顏色下看起來很棒。
  • 請勿持續為圖示加上動畫效果。這真是令人困擾。

範例

您可以在 examples/api/browserAction 目錄中找到使用瀏覽器動作的簡單範例。如需其他範例,以及查看原始碼的相關說明,請參閱「範例」。

類型

TabDetails

Chrome 88 以上版本

屬性

  • tabId

    號碼 選填

    要查詢狀態的分頁 ID。如果未指定分頁,系統會傳回非分頁專屬的狀態。

方法

disable()

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

停用分頁的瀏覽器動作。

參數

  • tabId

    號碼 選填

    要修改瀏覽器動作的分頁 ID。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

enable()

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

為分頁啟用瀏覽器動作。預設為啟用。

參數

  • tabId

    號碼 選填

    要修改瀏覽器動作的分頁 ID。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

getBadgeBackgroundColor()

Promise
chrome.browserAction.getBadgeBackgroundColor(
  details: TabDetails,
  callback?: function,
)

取得瀏覽器動作的背景顏色。

參數

傳回

  • Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

getBadgeText()

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

取得瀏覽器動作的徽章文字。如果未指定分頁,系統會傳回非分頁專屬的徽章文字。

參數

  • 詳細資料
  • callback

    函式 選填

    callback 參數如下所示:

    (result: string) => void

    • 結果

      字串

傳回

  • Promise<string>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

getPopup()

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

取得設為此瀏覽器動作彈出式視窗的 HTML 文件。

參數

  • 詳細資料
  • callback

    函式 選填

    callback 參數如下所示:

    (result: string) => void

    • 結果

      字串

傳回

  • Promise<string>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

getTitle()

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

取得瀏覽器動作的標題。

參數

  • 詳細資料
  • callback

    函式 選填

    callback 參數如下所示:

    (result: string) => void

    • 結果

      字串

傳回

  • Promise<string>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

setBadgeBackgroundColor()

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

設定徽章的背景顏色。

參數

  • 詳細資料

    物件

    • 顏色

      string | ColorArray

      陣列包含四個介於 0 到 255 的整數,用於組成徽章的 RGBA 顏色。也可以是包含 CSS 十六進位顏色值的字串,例如 #FF0000#F00 (紅色)。以全透明度算繪顏色。

    • tabId

      號碼 選填

      限制變更時機,僅在選取特定分頁時才會變更。關閉分頁時會自動重設。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

setBadgeText()

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

設定瀏覽器動作的徽章文字。徽章會顯示在圖示上方。

參數

  • 詳細資料

    物件

    • tabId

      號碼 選填

      限制變更時機,僅在選取特定分頁時才會變更。關閉分頁時會自動重設。

    • 文字

      string 選填

      您可以傳遞任意數量的字元,但最多只能放入四個字元。如果傳遞空白字串 (''),系統會清除徽章文字。如果指定 tabIdtext 為空值,系統會清除指定分頁的文字,並預設為全域徽章文字。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

setIcon()

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

設定瀏覽器動作的圖示。您可以將圖示指定為圖片檔案的路徑、畫布元素的像素資料,或其中一個的字典。必須指定 pathimageData 屬性。

參數

  • 詳細資料

    物件

    • imageData

      ImageData | 物件 選用

      ImageData 物件或字典 {size -> ImageData},代表要設定的圖示。如果圖示是使用字典指定,系統會根據螢幕的像素密度選擇要使用的圖片。如果圖片像素數量可容納在一個螢幕空間單位,且等於 scale,系統就會選取大小為 scale * n 的圖片,其中 n 是 UI 中圖示的大小。至少須指定一張圖片。請注意,'details.imageData = foo' 等同於 'details.imageData = {'16': foo}'

    • 路徑

      字串 | 物件 選填

      相對圖片路徑或字典 {size -> relative image path},指向要設定的圖示。如果圖示是使用字典指定,系統會根據螢幕的像素密度選擇要使用的圖片。如果圖片像素數量可容納在一個螢幕空間單位,且等於 scale,系統就會選取大小為 scale * n 的圖片,其中 n 是 UI 中圖示的大小。至少須指定一張圖片。請注意,'details.path = foo' 等同於 'details.path = {'16': foo}'

    • tabId

      號碼 選填

      限制變更時機,僅在選取特定分頁時才會變更。關閉分頁時會自動重設。

  • callback

    函式 選填

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 116 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

setPopup()

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

設定使用者點選瀏覽器動作圖示時,要以彈出式視窗開啟的 HTML 文件。

參數

  • 詳細資料

    物件

    • 彈出式訊息

      字串

      要顯示在彈出式視窗中的 HTML 檔案相對路徑。如果設為空字串 (''),系統就不會顯示彈出式視窗。

    • tabId

      號碼 選填

      限制變更時機,僅在選取特定分頁時才會變更。關閉分頁時會自動重設。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

setTitle()

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

設定瀏覽器動作的標題。這個標題會顯示在工具提示中。

參數

  • 詳細資料

    物件

    • tabId

      號碼 選填

      限制變更時機,僅在選取特定分頁時才會變更。關閉分頁時會自動重設。

    • title

      字串

      滑鼠游標懸停時,瀏覽器動作應顯示的字串。

  • callback

    函式 選填

    Chrome 67 以上版本

    callback 參數如下所示:

    () => void

傳回

  • Promise<void>

    Chrome 88 以上版本

    承諾僅支援資訊清單 V3 以上版本,其他平台則需使用回呼。

事件

onClicked

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

在點選瀏覽器動作圖示時觸發。如果瀏覽器動作包含彈出式視窗,則不會觸發。

參數

  • callback

    函式

    callback 參數如下所示:

    (tab: tabs.Tab) => void