使用者叫用擴充功能時 (例如點選動作),擴充功能會取得 "activeTab" 權限,暫時存取目前開啟的分頁。只要使用者停留在該頁面,就能存取分頁,但如果使用者離開或關閉分頁,存取權就會遭到撤銷。舉例來說,如果使用者在 https://example.com 上叫用擴充功能,然後前往 https://example.com/foo,擴充功能仍可存取該網頁。如果使用者前往 https://chromium.org,存取權就會遭到撤銷。
這項功能可做為 "<all_urls>" 的替代方案,但安裝期間不會顯示警告訊息:
未提供"activeTab"資訊:

使用 "activeTab":

系統不會授予受限網頁的存取權,例如 chrome:// 網頁。
範例
請參閱 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 the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
動機
以網頁剪報擴充功能為例,這類擴充功能具有動作和內容選單項目。這個擴充功能可能只需要在點選動作或執行內容選單項目時存取分頁。
如果沒有 "activeTab",這個擴充功能就必須要求每個網站的完整持續存取權,才能在使用者呼叫時運作。這項簡單的擴充功能掌握了許多權限,如果擴充功能遭到入侵,攻擊者就能存取擴充功能的所有內容。
相較之下,具備 "activeTab" 權限的擴充功能只會在使用者明確操作時,取得分頁的存取權。如果擴充功能遭入侵,攻擊者必須等待使用者叫用擴充功能,才能取得存取權。而且這項存取權只會持續到分頁導覽或關閉為止。
「activeTab」允許的操作
如果啟用分頁的 "activeTab" 權限,擴充功能可以:
- 如果也宣告了
"scripting"權限 (如上方範例),請在該分頁上呼叫scripting.insertCSS()或scripting.executeScript()。 - 透過傳回
tabs.Tab物件的 API,取得該分頁的網址、標題和 Favicon (基本上,"activeTab"會暫時授予主機權限)。 - 使用 webRequest API,在分頁中攔截傳送至分頁主要框架來源的網路要求。擴充功能會暫時取得該分頁主要框架來源的主機權限。
叫用 activeTab
下列使用者手勢會啟用 "activeTab" 權限:
- 執行動作
- 執行內容選單項目
- 透過 commands API 執行鍵盤快速鍵
- 接受 網址列 API 的建議