activeTab
權限會在使用者叫用擴充功能 (例如按一下瀏覽器動作) 時,授予擴充功能暫時存取目前使用中的分頁。使用者造訪該頁面時,分頁存取權會持續有效,使用者離開或關閉分頁時就會撤銷。
這可做為 <all_urls>
的許多用途的替代使用,但在安裝期間會顯示「無警告訊息」:
注意:自 M72 版起,系統會授予 activeTab
權限,直到使用者前往不同來源為止。也就是說,如果使用者在 https://example.com 上叫用擴充功能,然後前往 https://example.com/foo,擴充功能便可以繼續存取該頁面。如果使用者前往 https://chromium.org,存取權就會撤銷。
不使用 activeTab
:
使用 activeTab
:
範例
請參閱 Page Redder 範例擴充功能:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Make this page red"
},
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
console.log('Turning ' + tab.url + ' red!');
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="red"'
});
});
動機
假設有一個網頁剪輯擴充功能包含瀏覽器動作和內容選單項目。只有在點選瀏覽器動作,或執行內容選單項目時,此擴充功能可能確實需要存取分頁。
如果沒有 activeTab
,這項擴充功能就必須要求所有網站的完整永久存取權,以便於使用者呼叫網站時,讓網站正常運作。這對這個簡單的擴充功能來說有許多能力。如果擴充功能遭駭,攻擊者就能存取該擴充功能擁有的所有權限。
相反地,具有 activeTab
權限的擴充功能只有在回應明確使用者手勢時,才能存取分頁。如果擴充功能遭駭,攻擊者必須等待使用者叫用擴充功能後,才能取得存取權。而且存取權只會持續到分頁離開或關閉為止。
可用分頁支援的功能
啟用分頁的 activeTab
權限時,擴充功能可以:
- 在該分頁上呼叫
tabs.executeScript
或tabs.insertCSS
。 - 透過會傳回
tabs.Tab
物件的 API,取得該分頁的網址、標題和網站小圖示 (基本上,activeTab
會暫時授予tabs
權限)。 - 使用 webRequest API 攔截分頁至分頁的主要頁框來源的網路要求。擴充功能會暫時取得分頁主要頁框來源的主機權限。
叫用使用中分頁
下列使用者手勢會啟用 activeTab
:
- 執行瀏覽器動作
- 執行網頁動作
- 執行內容選單項目
- 透過 commands API 執行鍵盤快速鍵
- 接受 omnibox API 提供的建議