「"activeTab&」權限

"activeTab" 權限會在以下情況下,讓擴充功能暫時存取目前使用中的分頁: 使用者叫用擴充功能 (例如按一下動作)。分頁存取權 會在使用者離開網頁時持續顯示;當使用者離開或關閉分頁時,系統就會撤銷。 舉例來說,如果使用者叫用擴充功能 (https://example.com) 前往 https://example.com/foo,該擴充功能仍可存取該網頁。如果 使用者瀏覽 https://chromium.org 時,系統會撤銷存取權。

這可做為許多 "<all_urls>" 的替代用途,但會顯示沒有警告訊息 期間:

沒有 "activeTab"

未使用使用中分頁

透過 "activeTab"

含有使用中分頁

範例

請參閱 Page Redder 範例擴充功能:

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

service-worker:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

動機

假設使用包含動作內容選單項目的網頁剪輯擴充功能。這個 擴充功能可能只需要在按下動作時存取分頁 內容選單項目

如果沒有 "activeTab",這項擴充功能就必須要求每個網站的完整持續存取權, 以便在使用者呼叫時執行該項功能。主要是 來產生這項簡單的擴充功能。如果擴充功能遭到入侵 都能存取擴充功能 擁有的所有功能

相反地,具備 "activeTab" 權限的擴充功能只會在回應要求時取得分頁存取權 直接由使用者做出的手勢如果擴充功能遭到入侵,攻擊者就需等待 使用者在取得存取權前叫用擴充功能。而且存取權只會一直到分頁狀態為止 或已關閉的執行緒。

何謂「activeTab」允許

為分頁啟用 "activeTab" 權限時,擴充功能可以:

  • 如果也宣告了 "scripting" 權限,在該分頁上呼叫 scripting.insertCSS()scripting.executeScript() (如上述範例所示)。
  • 透過會傳回 tabs.Tab 物件的 API,取得該分頁的網址、標題和網站小圖示 (基本上,"activeTab" 會暫時授予主機權限)。
  • 使用 webRequest 將分頁中的網路要求攔截至分頁的主要頁框來源 也能使用 Google Cloud CLI 或 Compute Engine API該擴充功能會暫時取得分頁主頁框來源的主機權限。

正在叫用使用中的分頁

下列使用者手勢會啟用 "activeTab" 權限: